Se você estiver disposto a pegar todos os dígitos do pid você pode usar pgrep
para fazer isso para você:
pgrep -d " " -f ^/usr
imprimirá uma lista separada por espaços de todos os PIDs dos processos cujo comando começa com /usr
Se você realmente quiser usar o comando ps
, awk
seria uma ferramenta melhor do que sed
para fazer o que você deseja. Você poderia fazer isso, com apenas os 5 primeiros caracteres do PID:
ps -ax -o pid,command | awk '$2 ~ /^\/usr/ {printf( "%s ", substr($1,0,5));} END {print ""}'
Isto irá verificar se o segundo campo começa com /usr
e, se assim for, imprimir até os primeiros 5 caracteres do primeiro campo seguido por um espaço, então eu joguei uma nova linha no final para uma boa medida, mas você poderia remover isso se você não quiser uma nova linha, mesmo no final
Como Giles apontou, você provavelmente nunca vai realmente querer apenas os 5 primeiros caracteres de um PID (que provavelmente me interpretou mal a pergunta), então a resposta mais útil usando awk
seria:
ps -ax -o pid,command | awk '$2 ~ /^\/usr/ {printf( "%d ", $1);} END {print ""}'