Более элегантно "ps aux | grep -v grep"

Когда я проверяю список процессов и 'grep' выбирает те, которые мне интересны, сам grep также включается в результаты. Например, для списка терминалов:

$ ps aux  | grep terminal
user  2064  0.0  0.6 181452 26460 ?        Sl   Feb13   5:41 gnome-terminal --working-directory=..
user  2979  0.0  0.0   4192   796 pts/3    S+   11:07   0:00 grep --color=auto terminal

Обычно я использую ps aux | grep something | grep -v grep, чтобы избавиться от последней записи... но это не элегантно :)

Есть ли у вас более элегантный хак для решения этой проблемы (помимо обертывания всех команд в отдельный скрипт, что тоже неплохо)

165
задан Jakub M. 21 February 2012 в 10:15
поделиться

1 ответ

В зависимости от окончательного варианта использования Вы часто хотите предпочесть Awk вместо этого.

ps aux | awk '/[t]erminal/'

Это особенно верно, когда у Вас есть что-то как

ps aux | grep '[t]erminal' | awk '{print $1}'  # useless use of grep!

, где, очевидно, regex может быть включен в сценарий Awk тривиально:

ps aux | awk '/[t]erminal/ { print $1 }'

, Но действительно, не переосмысливайте это сами. pgrep и друзья были вокруг в течение долгого времени и обрабатывают это все пространство задач намного лучше, чем самые специальные перереализации.

0
ответ дан 23 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: