Если вы хотите взять все цифры pid, вы можете использовать pgrep
, чтобы сделать это за вас:
pgrep -d " " -f ^/usr
напечатает разделенный пробелами список всех PID процессов, команда которых запускается с / usr
Если вы действительно хотите использовать команду ps
, awk
будет лучшим инструментом, чем sed
, чтобы делать то, что вы хотите . Вы можете сделать это, используя только первые 5 символов PID, например:
ps -ax -o pid,command | awk '$2 ~ /^\/usr/ {printf( "%s ", substr($1,0,5));} END {print ""}'
Это проверит, начинается ли второе поле с / usr
, и если да, то напечатайте до первых 5 символов первого поля. с последующим пробелом, затем я добавил новую строку в конце для хорошей меры, но вы могли бы удалить это, если не хотите, чтобы новая строка даже в самом конце
Как указал Джайлз, вы, вероятно, никогда действительно не хотите только первые 5 символов PID (вероятно, я неправильно прочитал вопрос), поэтому более полезным ответом с использованием awk
будет:
ps -ax -o pid,command | awk '$2 ~ /^\/usr/ {printf( "%d ", $1);} END {print ""}'