[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Grep und regex



On 2003.11.07 20:29, Thorsten Haude wrote:
Moin,

* Andreas Schmidt <andy@space.wh1.tu-dresden.de> [2003-11-07 10:06]:
>
>	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.

Ich kann Dir nicht folgen. In Zeile 1 schreibst Du eine PID in die
Variable, richtig? Dann wirst Du in Zeile zwei diese PID auch finden.
Wo siehst Du, daß die Zahl der Ziffern ins Spiel kommt.

Hallo,

grep "^$PROC"... "^" beginnt die Suche am Zeilenanfang und legt somit die Spalte, in der "ps ax" die pid ausgibt, als relevant fest. Funktioniert aber nur, wenn auch wirklich die pid am Zeilenanfang steht -- sobald die pid eingerueckt wird, geht das nicht mehr. Deshalb muessen eben eventuelle Leerzeichen beruecksichtigt werden.


Ich würde es allerdings so machen:
    ps -ef | grep `cat pid`

Ist nicht eindeutig, weil das Ergebnis von `cat pid` ueberall in der Zeile stehen kann. Das wuerde also jede Menge false positives liefern, z.B. ppid oder Prozesse, deren pid `cat pid` als Teilstring enthaelt (pid=123 waere z.B. auch in 1230).


Thorsten

Schoenen Gruss,

Andreas



Reply to: