Остановить поиск параметров в каталогах по grep сразу после совпадения параметров - PullRequest
0 голосов
/ 17 июня 2010

Я использую следующую команду для поиска в / var некоторого параметра в моем скрипте

grep -R "param" / var / * 2> / dev / null | grep -wq "param"

моя проблема в том, что после grep найти параметр в файле grep продолжает поиск, пока все поиски в / var / * не будут завершены

Как выполнить останов сразу после совпадения grep с параметром

Например, когда я запускаю: grep -R "param" / var / * 2> / dev / null | grep -wq "param"

grep находит параметр через одну секунду.

Но grep продолжает поиск других таких же параметров в других файлах, и это занимает почти 30 секунд

Как остановить grep сразу после совпадения параметров?

THX

Ответы [ 4 ]

1 голос
/ 17 июня 2010

вы можете использовать grep -m 1, чтобы остановить после первого матча

0 голосов
/ 17 июня 2010

grep имеет опцию -m, --max-count:

$ grep -R "param" /var/* 2>/dev/null |grep -wq -m1 "param"

Вопросы: почему двойной grep? зачем расширяться с помощью *, если вы делаете grep рекурсивным? рассмотрите также -s для тихих надоедливых сообщений об ошибках (я бы рекомендовал alto использовать -n для печати соответствующей строки, но для -q кажется, что вы не хотите выводить):

$ grep -qsRw -m1 "param" /var
0 голосов
/ 17 июня 2010

Если вы используете GNU grep, попробуйте это:

  -m, --max-count=NUM       stop after NUM matches
0 голосов
/ 17 июня 2010

Таким образом:

grep -R "param" / var / * 2> / dev / null | grep -wq "param" | голова -n 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...