一次用grep搜索两个表达式

时间:2013-02-27 15:53:53

标签: bash grep

这是基本的,但我无法谷歌。我可以使用grep的invokation来做

grep expr1 | grep expr2

这样它打印的行包括expr1和expr2?

4 个答案:

答案 0 :(得分:39)

您可以提供多个表达式来搜索多个-e flags。另请参阅this post

  

grep -e expr1 -e expr2

答案 1 :(得分:29)

试试这个:

grep 'expr1.*expr2\|expr2.*expr1'

如果您知道“expr2”将始终位于“expr1”之后,那就比它需要的要复杂一点。在这种情况下,您可以将其简化为:

grep 'expr1.*expr2'

答案 2 :(得分:2)

你应该做什么。

以下是实现相同效果的另一种方法:

grep -E 'expr1.*expr2|expr2.*expr1'

答案 3 :(得分:1)

实际上,如果你想获得包含两个表达式的行,你自己的建议几乎是正确的。使用:

grep expr1 somefile | grep expr2