这个表达式应该做什么?
grep -i Keyword1 | grep -i Keyword2 file.txt
是否应该返回包含关键字1或关键字2的行?我问这个,因为这不是我得到的。我总是得到关键字2的行,并且事情似乎没有完成。我的意思是当你运行一个正常的命令后,它返回到完成后的命令提示符。似乎似乎我跑上面的时候会发生的事情。这里发生了什么样的管道?
答案 0 :(得分:3)
这没有多大意义。 |
是一个管道,它重定向stdin / stdout:a | b
将a
的标准重定向到b
的标准输出。 grep
,没有文件作为参数,将从stdin获取输入,这就是你的命令不返回的原因。
你想要的是
grep -i Keyword1 file.txt | grep -i Keyword2
这将为Keyword1
grep,输出将为Keyword2
的grepped。这将产生逻辑and
,过滤Keyword1 AND Keyword2
。
答案 1 :(得分:1)
如果您想要合乎逻辑,或者可以使用grep -Ei '(Keyword1|Keyword2)' file.txt
你现在拥有的是奇怪的。这就是你打算做的事情:
grep -i Keyword1 file.txt | grep -i Keyword2
这将为您提供逻辑和。