Классический инструмент для извлечения колонн cut .
pgrep -fl 'bash script_c.sh' | cut -f1 -d" "
извлечет первый столбец, разделенный пробелами. Это должно на самом деле делать то, что вы хотели. Тем не менее, большая хитрость заключалась в том, что я использовал pgrep , у которого гораздо более приятный вывод. Если бы я не добавил ключ -l , не было бы необходимости cut:
pgrep -f 'bash script_c.sh'
Однако для вашей конкретной задачи вы можете просто использовать pkill .
Это позволяет убивать процессы по шаблону, например
pkill -f "script_c.sh"
Большим преимуществом является то , что pgrep и pkill осознают себя, и только выход / убить соответствие других процессов. В приведенном выше примере у вас будут ложные срабатывания, например, команда grep . Так что просто используйте pkill который должен быть доступен в любой современной системе Linux / BSD.
Если вы действительно хотите использовать ps (что я не рекомендую):
ps ax | grep script_c.sh | grep -v grep | sed -e 's/^ *\([0-9]*\) .*/\1/'
или даже лучше с awk (что лучше при автоматическом разборе макета столбца ps):
ps ax | awk '!/awk/ && /script_c.sh/ { print $1 }'
Обратите внимание, что для обоих вы должны убедиться, что вы не соответствуете себе, т.е. исключить grep и awk из соответствия. Таким образом, использование pgrep существенно проще. И pgrep и pkill - правильные инструменты для решения вашей актуальной проблемы.