A ferramenta clássica para extrair colunas é cut .
pgrep -fl 'bash script_c.sh' | cut -f1 -d" "
extrairá a primeira coluna, separada por caracteres de espaço simples. Deve realmente fazer o que você queria. O truque maior, porém, foi que eu usei pgrep , que tem uma saída muito melhor. Se eu não tivesse adicionado a opção -l , não haveria necessidade de cut :
pgrep -f 'bash script_c.sh'
No entanto, para sua tarefa específica, você pode querer usar apenas pkill .
Permite matar processos por um padrão, por exemplo
pkill -f "script_c.sh"
O grande benefício é que pgrep e pkill estão cientes de si mesmos e só produzirão / eliminarão outros processos outros . Em seu exemplo acima, você terá falsos positivos, como o comando grep , por exemplo. Portanto, use apenas pkill , que deve estar disponível em qualquer sistema Linux / BSD moderno.
Se você realmente quiser usar ps (o que não recomendo):
ps ax | grep script_c.sh | grep -v grep | sed -e 's/^ *\([0-9]*\) .*//'
ou melhor ainda com o awk (que é melhor analisar automaticamente o layout da coluna do ps):
ps ax | awk '!/awk/ && /script_c.sh/ { print $1 }'
Observe que, para ambos, você precisa se certificar de que não corresponde a si mesmo, por exemplo, excluir grep e awk da correspondência. Então, usar pgrep é substancialmente mais simples. Tanto pgrep como pkill são as ferramentas certas para o seu problema real.