关于grep用法和中缀运算符

时间:2012-10-11 01:41:09

标签: linux unix grep

这个表达式应该做什么?

grep -i Keyword1 | grep -i Keyword2 file.txt

是否应该返回包含关键字1或关键字2的行?我问这个,因为这不是我得到的。我总是得到关键字2的行,并且事情似乎没有完成。我的意思是当你运行一个正常的命令后,它返回到完成后的命令提示符。似乎似乎我跑上面的时候会发生的事情。这里发生了什么样的管道?

2 个答案:

答案 0 :(得分:3)

这没有多大意义。 |是一个管道,它重定向stdin / stdout:a | ba的标准重定向到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

这将为您提供逻辑和。