这个表达式应该做什么?
grep -i Keyword1 | grep -i Keyword2 file.txt
是否应该返回包含关键字 1 或关键字 2 的行?我问这个是因为这不是我得到的。我总是以某种方式得到关键字 2 的行,而且事情似乎没有完成。我的意思是当你运行一个正常的命令时,它在完成后返回到命令提示符。似乎没有当我运行上述内容时会发生这种情况。这里是否发生了某种管道?
这真的没有意义。|
是一个管道,它重定向 stdin/stdout:将 s stdouta | b
重定向a
到b
s stdin。grep
,没有文件作为参数,将从标准输入获取输入,这就是您的命令不返回的原因。
你想要的是
grep -i Keyword1 file.txt | grep -i Keyword2
哪个将 grep for Keyword1
,输出将被 grep for Keyword2
。这将产生一个合乎逻辑and
的过滤器Keyword1 AND Keyword2
。
如果你想要逻辑或,你可以使用grep -Ei '(Keyword1|Keyword2)' file.txt
你目前拥有的是奇怪和错误的。这就是你打算做的:
grep -i Keyword1 file.txt | grep -i Keyword2
这会给你逻辑和。