Usar formato de salida ps:
ps -A -o pid
El formato de salida del comando es la mejor opción. La opción o controla el formato de salida. Enumeré algunos de los argumentos a continuación, vea 'man ps' para el resto (para usar múltiples sería -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 o Cut sería mejor para obtener columnas:
En general, no querrá una expresión regular para seleccionar la primera columna, querrá canalizarla para cortar o awk para cortar la primera columna como:
ps ax | awk '{print $1}'
Regex es una opción, si no la mejor:
Si tuviera que usar expresiones regulares, podría ser algo como:
ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'
$1 imprime solo lo que coincidió entre paréntesis. ^ ancla el al comienzo de la línea. El asterisco de espacio significa permitir caracteres de espacio opcionales antes del número. [0-9]+ significa uno o más dígitos. Pero no recomendaría expresiones regulares para esta tarea en particular, ¿ves por qué? :-)
ps ax | awk '{ print $1; }'
Usa la -o cambia para tener una salida en formato personalizado
ps -o pid
La mala manera de usar sed, como usted pidió explícitamente, puede ser
ps -ax | sed 's#^\( *[0-9]\+\) .*$#\1#'