Hallo,

bin gerade ueber ein Problem mit meinen regular expressions bei grep gestolpert. Wollte in der Ausgabe von ps nach einer bestimmten pid suchen:

        PROC=`cat pid`
        ps ax | grep "^$PROC"

Das ganze funktionierte auch eine Weile -- bis auf einmal $PROC nur vierstellig war. Da es auch fuenfstellige pids gab und die Ausgabe rechtsbuendig ist (vor pid also white space war), wurde nichts mehr gefunden.

"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

ps ax | grep "^[ ]*$PROC"

zum gewuenschten Resultat gefuehrt, aber ein bisschen verwundert bin ich doch. Probleme mit dieser Vorgehensweise koennte ich mir vorstellen, wenn nicht nur Leerzeichen, sondern auch Tabulatoren gefunden werden sollen. Ich weiss nun nicht, ob das in der shell ueberhaupt relevant ist; zumindest bei PERL wurde sehr wohl zwischen verschiedenen Arten von white space unterschieden.

Falls mich jemand erleuchten koennte, wuerde ich mich sehr freuen.

Schoenen Gruss,

Andreas





--
Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/


Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Antwort per Email an