Bash grep count搜索多个单词

Bash grep count搜索多个单词,bash,grep,Bash,Grep,如何搜索包含多个单词的行?我想要一种“和”的关系。 我想知道这类线路的总数 grep -c -E "tok1.*tok2" file grep-c-E“tok1.*tok2”文件 返回0egrep“tok1”文件| egrep-c“tok2”要具体使用grep,您可以使用OR运算符来考虑这两种可能性: grep -c -E "(.*tok1.*tok2.*|.*tok2.*tok1.*)" file 您也可以简单地对一个令牌进行grep,然后通过管道将其传递到另一个令牌的重复grep: gre

如何搜索包含多个单词的行?我想要一种“和”的关系。 我想知道这类线路的总数

grep -c -E "tok1.*tok2" file grep-c-E“tok1.*tok2”文件
返回0

egrep“tok1”文件| egrep-c“tok2”

要具体使用grep,您可以使用OR运算符来考虑这两种可能性:

grep -c -E "(.*tok1.*tok2.*|.*tok2.*tok1.*)" file
您也可以简单地对一个令牌进行grep,然后通过管道将其传递到另一个令牌的重复grep:

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

当您开始引入大量代币时,多个grep似乎要快得多。您还可以替换为grep的regexp版本的egrep命令……但我之所以避免使用它,是因为同样的原因:在我看来,在搜索中引入多个术语时,似乎需要花费更长的时间。

除了grep,还有awk:

awk '/tok1/ && /tok2/ {count++} END {print count}' file

请提供一个输入文件的示例。那么您想要包含tok1和tok2的行数?