grep -v“ grep”是什么意思和做什么?


17

我想知道这grep -v "grep"是什么意思?


8
您可以man grep阅读该命令的参考手册页,也可以阅读有关某些命令(包括grep)的更多信息info grep。您的系统中的文档通常非常方便。
guiverc

12
grep -v "grep"通常会在列出进程时用来过滤grep本身,通常涉及3条管道,尽管当然有更好的方法,例如pgrep允许更少的“管道”。参见unix.stackexchange.com/q/74185/85039
Sergiy Kolodyazhnyy

13
做到了。我正在给我的rootkit打电话grep
约书亚

在非安全相关的情况通常情况下使用,如ps aux | grep fubar | grep -v grep这里fubar是我正在开发,已停止响应,并且我想找到,所以我可以杀了它,其ID。假设其中有两个killall是不合适的。
nigel222

Answers:


69

grep -v "grep"逐行输入,仅输出grep未出现的行。没有-v,它将仅输出grep 确实出现的行。有关man grep详细信息,请参见。

grep实用程序本身而言,grep作为参数传递给它的模式与其名称相同并不重要。但是在大多数grep -v grep实际出现的情况下,这不是巧合。

grep -v grep(或grep -v 'grep'grep -v "grep")通常出现在左侧为命令的管道的右侧ps您可能已经看到了。例如,我可能正在寻找名称,路径或命令行参数表明它们与Xfce相关的正在运行的程序:

ek@Io:~$ ps x | grep xfce
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1    S+     0:00 grep --color=auto xfce

我的grep命令显示在输出中,但这不是我想要的。当我检查正在运行的内容时,我正在查找有关正在运行的流程的信息,而不是仅由于我努力检查正在运行的内容而正在运行的流程的信息。

消除这种分心的一种常见方法是添加另一个管道grep -v grep

ek@Io:~$ ps x | grep xfce | grep -v grep
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd

grep-F将其模式视为正则表达式而不是固定字符串。因此,另一种方法是编写一个正则表达式,该正则表达式完全匹配xfce但写法不同。例如:

ek@Io:~$ ps x | grep '[x]fce'
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd

这是有效的,因为[x]是与字母完全匹配的字符类x


这些流行方法的缺点是,grep即使不是grep您自己运行的命令,它们也会过滤掉包含的行。它们甚至可能不是grep命令-只是名称,路径或命令行参数包含的 命令grep。因此,正如Sergiy Kolodyazhnyy所指出的那样,通常这些方法(都不是涉及对输出的管道进行处理的其他方法ps)都不是理想的,并且正如Nic Hartley所提到的其他 方法也经常使用pgrep。例如:

ek@Io:~$ pgrep -af xfce
2955 xfce4-power-manager
2958 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
  • -a 显示完整的命令行。忽略它仅显示进程ID号。
  • -f 在完整的命令行中搜索。忽略它仅搜索名称。

10
也许还有pgrep另一种替代方法值得一提ps | grep
莫妮卡基金会的诉讼案

8

grep --help告诉我们-v标志的作用:

-v, --invert-match        select non-matching lines

您可以使用-v标志来打印反转匹配;也就是说,它仅匹配不包含给定单词的那些行。例如,打印不包含单词栏的所有行:

$ grep -v bar /path/to/file

阅读更多...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.