我尝试使用grep搜索文件中的两个不同模式。但它没有给出正确的结果..
我想打印数据,如果两个模式在input.txt
中匹配,那么只应在控制台中打印匹配的行。
例如:
grep pattern1 && && pattern2 input.txt
请建议我如何做到这一点。
答案 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