如何使用grep搜索文件中的两个不同模式

时间:2014-02-25 15:16:53

标签: unix awk grep

我尝试使用grep搜索文件中的两个不同模式。但它没有给出正确的结果..

我想打印数据,如果两个模式在input.txt中匹配,那么只应在控制台中打印匹配的行。

例如:

grep pattern1 && && pattern2 input.txt   

请建议我如何做到这一点。

4 个答案:

答案 0 :(得分:0)

只需grep第一个参数,然后通过管道来grep第二个参数:

grep "pattern1" input.txt | grep "pattern2"

使用awk可以这样做:

awk '/pattern1/ && /pattern2/' file

答案 1 :(得分:0)

使用awk

执行此操作的另一种方法
awk '/pattern1.*pattern2/' file

按照这种模式的顺序很重要。 pattern1需要在pattern2之前

答案 2 :(得分:0)

如果你的两个模式都可以使用grep,那么这可以帮助你通过管道第二个grep进程的第一个grep结果来获得结果。 (cat用于在终端显示你的input.txt)

cat input.txt | grep pattern1 | grep pattern2

如果您的模式不是简单的grep模式,那么您可能需要告诉我们,您想要的模式是什么?感谢

答案 3 :(得分:0)

使用grep,您可以使用-e提供多种模式:

$ seq 10 | grep -e 1 -e 5
1
5
10

如果你想要包含patt1和patt2的行(按某种顺序),Perl正则表达式和先行断言可以做到:

$ seq 100 | grep -P '(?=.*1)(?=.*5)'
15
51