вы также можете рассмотреть возможность использования
pgrep "you_script"
или
pgrep -f "complete_cmd_line_of_script"
"process-grep" приводит только к PID
Если вы хотите убить процесс вы обнаружили, вы также можете использовать pkill, который использует тот же синтаксис, что и pgrep
В ожидании вашего ответа на мой комментарий по вопросу вот мой ответ:
Во-первых, [^}. To]
не делает то, что вы думаете. Он не будет не соответствовать строкам, которые не имеют шаблона }. До
. Он соответствует строкам, которые содержат любой символ , кроме .
, }
, t
или o
. Другими словами, много строк.
Чтобы упростить задачу, пусть sed
ничего не печатает по умолчанию, а затем скажет ему печатать все , кроме тех строк, которые соответствуют шаблонам, которые вы хотите исключить:
sed -n '/\(\bend\|}\.to\)/!p' your_file
Это напечатает все строки, не содержащие end.to
на границе слова (т.е. allend.to
не учитывается) или с }. На
.
Если, кроме того, вы хотите напечатать только те строки, которые соответствуют \. Foo [[: space:]]
, просто удалите строки, соответствующие нежелательным шаблонам, и добавьте условную печать:
sed -n '/\(\bend\|}\.to\)/d;/\.to[[:space:]]/p' your_file
Конечно , между совпадением и печатью вы можете применить любую замену, которая вам нравится:
sed -n '/\(\bend\|}\.to\)/d;/\.to[[:space:]]/s/foo/bar/g;p' your_file
В большинстве случаев это работает:
до:
sed -i 's/[^}.to].to[[:space:]]/).to /' ../_spec_seded/"$file"
после:
sed -i 's/[^}.to|end.to].to[[:space:]]/).to /' ../_spec_seded/"$file"