Použít výstupní formátování ps:
ps -A -o pid
Výstupní formátování příkazu je nejlepší volbou. Volba o řídí výstupní formátování. Níže jsem uvedl některé z argumentů, zbytek viz 'man ps' (pro použití více by to bylo -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 nebo Cut by bylo lepší získat sloupce:
Obecně byste nechtěli regulární výraz pro výběr prvního sloupce, ale chtěli byste jej pomocí potrubí vyjmout nebo awk vyříznout první sloupec jako:
ps ax | awk '{print $1}'
Regulační výraz je možnost, ne-li nejlepší:
Pokud byste použili regulární výraz, mohlo by to být něco jako:
ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'
$1 vytiskne pouze to, co bylo uvedeno v závorce. ^ ukotví na začátek řádku. Hvězdička mezera znamená, že před číslem lze vložit volitelné mezery. [0-9]+ znamená jednu nebo více číslic. Ale pro tento konkrétní úkol bych nedoporučoval regulární výraz, vidíte proč? :-)
ps ax | awk '{ print $1; }'
Použijte -o přepněte, abyste měli výstup vlastního formátu
ps -o pid
Špatný způsob používání sed, jak jste se výslovně ptali, může být
ps -ax | sed 's#^\( *[0-9]\+\) .*$#\1#'