9/13 How do you write a regular expression to NOT include a certain
string wihtout grep -v... say I was to no include Tue but want Thu
so ^[^T] wont work. I dont have to do [^T][^u][^e] do I?
\_ [^T][^u][^e] won't work -- that doesn't match Thu. If you want
to match any three-character sequence except Tue with standard
regexps, you have to do something like this: [^T]..|.[^u].|..[^e]
(That reads: anything whose first character isn't T, or whose
second character isn't u, etc.) If you're using perl, it's much
easier: (?!Tue) will match anything that isn't Tue.
There might also be an easier way. What are you trying to do?
\_ shouldnt it be [^T].. & .[^u]. & ..[^e]?? if you use or,
you wouldnt get a match for Thu since it starts with T?
\_ The caret inside brackets means "not": [^T] matches any
character that is not a T.
\_ therefore, Thu will not be matched since it starts
with 'T'??
\_ No, because of the "|" ("or") operator: it will be
matched because its second character is not "u" (.[^u].)
and because those patterns were joined with or
operators. Compare "a|b" -- it matches "b" even though
"b" is not "a". It's really a clever application of
De Morgan's law to regexps.
\_ oh yeah...duh...stupid me... thanks.
\_ or if you specifically know you're always matching
the output of `date`, for example, you could just use '^..[^e]'
seeing as how that does not match Mon|Wed|Thr|Fri|Sat|Sun
\_I am wondering about a general solution. Say I want
to grep "last" for everyone logging on Tue but NOT from
http://berkeley.edu. Can I do that with one egrep and not
last | grep Tue | grep -v http://berkeley.edu?
\_ Not easily. What's wrong with calling grep twice?
\_Because I need to pass a single regular expression
to a differnt program. I am only using grep to test
the regular expression for the other program. I cannot
call the other program twice.
\_ This is too general. Why not use awk or perl to
pass the correct arguments to the second
program? Why do you want to pass a regexp? --dim
\_ I am not a UNIX newbie. I thought about using
two different regular expressions but that just
isn't an option. It has to be done in one pass.
\_ You sound like a newbie. Why can't you use
awk of perl as dim suggested? -not dim
\-you are begging the question. i can
certainly think of cases where you cant pipe to
to multiple greps. say you are doing an fgrep
type thing and have a file of regexps, one per
line. --psb
\_ Suppose I invent some totally arbitary and
unrelated case to support my meaningless
point? Was it an African or a European
swallow? Who cares?
\_ the swallow. Or, alternatively, the
"swallow-ee".
\-you know i talked to the person who
asked the question. my example is
actually pretty close to the real
problem --psb
\_ Exactly. As I saifd, African or
European?
\_ Is there a regular expression for a valid
UNIX UID? That is faster than testing if it
is between 0 and 65000 on each line, isn't it?
\_ define "valid UNIX UID"
\_ How about regexp for a number
between 0 and 65678?
\_ Recent Solaris versions
support UIDS > 64K -ax |