Re: Grep und regex
Am Freitag, 7. November 2003 10:44 schrieb Andreas Metzler:
> Andreas Schmidt <andy@space.wh1.tu-dresden.de> wrote:
> > "man grep" sagt, dass es bei extended regular expressions
> > vordefinierte
> >
> > Klassen von Zeichen gibt:
> >> Finally, certain named classes of characters are predefined
> >> within bracket expressions, as follows. Their names are self
> >> explanatory, and they are [:alnum:], [:alpha:], [:cntrl:],
> >> [:digit:], [:graph:], [:lower:], [:print:], [:punct:],
> >> [:space:], [:upper:], and [:xdigit:].
> >
> > Da das alles ja so schoen self explanatory sein sollte, habe ich
> > aus meiner urspruenglichen zeile folgendes gemacht:
> >
> > ps ax | grep -E "^[:space:]*$PROC"
> >
> > Leider funktioniert das nicht. In diesem Fall hat zwar letztlich
>
> [...]
>
> "For example, [[:alnum:]] means [0-9A-Za-z],"
>
> Beachte [[]]. Der ganze Absatz beschaeftigt sich damit, was fuer
> Zeichen *innerhalb* von [...] zulaessig sind, eben einzelne Zeichen,
> Bereiche A-Z und Klassen [:space:].
Ich will nur noch ergänzen, dass der Ausdruck
ps ax | grep -E "^[[:space:]]*$PROC"
als auch
ps ax | grep -E "^[ ]*$PROC"
nicht zwingend eindeutig ist:
jan@pennywise:~$ PID=4
jan@pennywise:~$ ps ax | grep -E "^[[:space:]]*$PID"
4 ? SW 0:00 [kswapd]
401 tty1 S 0:00 /sbin/getty 38400 tty1
402 tty2 S 0:00 /sbin/getty 38400 tty2
403 tty3 S 0:00 /sbin/getty 38400 tty3
404 tty4 S 0:00 /sbin/getty 38400 tty4
405 tty5 S 0:00 /sbin/getty 38400 tty5
406 tty6 S 0:00 /sbin/getty 38400 tty6
407 ? S 0:00 /usr/sbin/apache
408 ? S 0:00 /usr/sbin/apache
409 ? S 0:00 /usr/sbin/apache
410 ? S 0:00 /usr/sbin/apache
411 ? S 0:00 /usr/sbin/apache
Besser ist es, auch nach der PID auf space zu prüfen:
jan@pennywise:~$ ps ax | grep -E "^[[:space:]]*$PID[[:space:]]"
4 ? SW 0:00 [kswapd]
Jan
Reply to: