grep count поиск по нескольким словам - PullRequest
2 голосов
/ 09 июня 2011

как мне искать строки, содержащие несколько слов?Я хочу отношения "И".Я хочу общее количество таких строк.

grep -c -E "tok1.*tok2" file

return 0

Ответы [ 3 ]

4 голосов
/ 09 июня 2011

Чтобы использовать grep специально, вы можете использовать оператор ИЛИ для обеих возможностей:

grep -c -E "(.*tok1.*tok2.*|.*tok2.*tok1.*)" file

Вы также можете просто выполнить grep для одного токена, а затем передать его повторяющемуся grep для другого токена:

grep "tok1" file | grep -c "tok2"

Множественные greps кажутся намного быстрее, когда вы начинаете вводить много токенов. Вы также можете заменить команду egrep , которая является регулярной версией grep ... но я избегаю ее по той же причине: мне кажется, что при вводе нескольких терминов в поиск мне требуется намного больше времени .

3 голосов
/ 10 июня 2011

В дополнение к grep есть awk:

awk '/tok1/ && /tok2/ {count++} END {print count}' file
1 голос
/ 09 июня 2011

egrep файл "tok1" |egrep -c "tok2"

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