Use a formatação de saída do ps:
ps -A -o pid
A formatação de saída do comando é a melhor opção. A opção o controla a formatação de saída. Eu listei alguns dos argumentos abaixo, veja 'man ps' para o resto (para usar múltiplos, seria -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 ou Cut seria melhor para obter colunas:
Geralmente você não iria querer um regex para selecionar a primeira coluna, você iria querer canalizá-lo para cortar ou awk para cortar a primeira coluna como:
ps ax | awk '{print $1}'
Regex é uma opção, se não a melhor:
Se você fosse usar regex, poderia ser algo como:
ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'
$ 1 imprime apenas o que foi correspondido entre parênteses. ^ ancora o para o começo da linha. Asterisco de espaço significa permitir caracteres de espaço opcionais antes do número. [0-9] + significa um ou mais dígitos. Mas eu não recomendaria o regex para essa tarefa em particular, veja por quê? : -)