Linux中的多个grep命令

时间:2017-03-09 11:02:31

标签: command-line grep

关于grep命令行的基本问题。我通过使用以下命令行找到了如何知道服务正在运行的方式:

ps -ef |grep -v grep | grep mongodb

我对第二个grep感到困惑:

|grep -v grep |

为什么我需要在“-v”之后使用“grep”???

该命令与此命令有什么不同?

ps -ef |grep mongodb

谢谢!

2 个答案:

答案 0 :(得分:1)

当你grep "mongodb“通过命令行时,你的命令也包含”mongodb“这个词。所以你会得到两个结果。哪个是有缺陷的结果。grep -v是删除grep用户输入的命令。

sh-4.1$ ps -ef |grep -v grep | grep mongodb
ps   17308 30074  0 06:05 pts/300  00:00:00 sh mongodb

VS

sh-4.1$ ps -ef |grep mongodb
ps   17308 30074  0 06:05 pts/300  00:00:00 sh mongodb
ps   17456 30074  0 06:05 pts/300  00:00:00 grep mongodb  #<<<This also contains mongodb word. Hence result is flawed. 

答案 1 :(得分:0)

-v选项告诉grep不要让任何匹配模式的东西,在这种情况下包含字符串“grep”的行。 所以如果省略grep -v grep 你的grep进程本身也会在管道中的第二个命令之后显示在输出中(也在第三个命令之后,因为grep进程本身包含单词“mongodb”)。