Verwenden Sie die ps-Ausgabeformatierung:
ps-A-o pid
Die Ausgabeformatierung des Befehls ist die beste Option. Die Option o steuert die Ausgabeformatierung. Ich habe unten einige Argumente aufgelistet, siehe 'man ps' für den Rest (um mehrere zu verwenden, wäre es -o pid,cmd,flags
).
KEY LONG DESCRIPTION
c cmd simple name of executable
C pcpu cpu utilization
f flags flags as in long format F field
g pgrp process group ID
G tpgid controlling tty process group ID
j cutime cumulative user time
J cstime cumulative system time
k utime user time
o session session ID
p pid process ID
Awk oder Cut wäre besser, um Spalten zu erhalten: Im
Allgemeinen möchten Sie keinen regulären Ausdruck für die Auswahl der ersten Spalte, Sie möchten ihn zum Schneiden leiten oder awk zum Ausschneiden der ersten Spalte wie folgt:
ps ax | awk '{print $1}'
Regex ist eine Option, wenn nicht die beste:
Wenn Sie Regex verwenden, könnte dies etwa so aussehen:
ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'
$ 1 druckt nur das, was in der Klammer übereinstimmt. ^ verankert das am Zeilenanfang. Leerzeichen bedeutet, dass optionale Leerzeichen vor der Nummer zulässig sind. [0-9] + bedeutet eine oder mehrere Ziffern. Aber ich würde Regex für diese spezielle Aufgabe nicht empfehlen. Sehen Sie, warum? :-)
quelle
Verwenden Sie den Schalter -o , um eine Ausgabe im Cust-Format zu erhalten
Der schlechte Weg mit sed, wie Sie ausdrücklich gefragt haben, kann sein
quelle
ps -eo pid oder ps -eo% p
-e Alle Prozesse auswählen -o Format pid = Prozess-ID% p sameas pid
quelle