Utiliser le formatage de sortie ps :
ps -A -o pid
Le formatage de sortie de la commande est la meilleure option. L'option o contrôle le formatage de la sortie. J'ai énuméré certains des arguments ci-dessous, voir 'man ps' pour le reste (pour en utiliser plusieurs, ce serait -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 serait préférable pour obtenir des colonnes :
Généralement, vous ne voudriez pas d'expression régulière pour sélectionner la première colonne, vous voudriez la diriger pour couper ou awk pour couper la première colonne comme :
ps ax | awk '{print $1}'
Regex est une option, sinon la meilleure :
Si vous deviez utiliser regex, cela pourrait ressembler à :
ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'
$1 imprime uniquement ce qui correspond entre parenthèses. ^ ancre le au début de la ligne. Espace astérisque signifie autoriser les caractères d'espacement facultatifs avant le nombre. [0-9]+ signifie un ou plusieurs chiffres. Mais je ne recommanderais pas regex pour cette tâche particulière, voyez pourquoi ? :-)
ps ax | awk '{ print $1; }'
Utilisez le -o basculer pour avoir une sortie au format client
ps -o pid
La mauvaise façon d'utiliser sed, comme vous l'avez explicitement demandé, peut être
ps -ax | sed 's#^\( *[0-9]\+\) .*$#\1#'