Joe Asked: 2019-06-24 22:40:38 +0800 CST2019-06-24 22:40:38 +0800 CST 2019-06-24 22:40:38 +0800 CST grep -v "grep" 是什么意思和做什么? 772 我想知道这grep -v "grep"是什么意思? bash grep 2 个回答 Voted Best Answer Eliah Kagan 2019-06-24T22:53:28+08:002019-06-24T22:53:28+08:00 grep -v "grep"逐行输入,只输出grep没有出现的行。如果没有-v,它将仅输出grep 确实出现的行。详情请参阅man grep。 就grep实用程序本身而言,grep作为参数传递给它的模式与其名称相同并不重要。但在实际出现的大多数情况下grep -v grep,这并非巧合。 grep -v grep(or grep -v 'grep'or 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 grepwithout-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]它是一个与 letter 完全匹配的字符类x。 grep这些流行方法的一个缺点是,即使它们不是grep您自己运行的命令,它们也会过滤掉包含的行。它们甚至可能不是grep命令——只是名称、路径或命令行参数包含 grep. 因此,正如Sergiy Kolodyaznyy 所指出的那样,通常这些方式(或任何其他涉及管道输出的方法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 在完整的命令行中搜索。省略它以仅搜索名称。 Karlom 2019-06-24T22:48:42+08:002019-06-24T22:48:42+08:00 grep --help告诉我们-vflag 的作用: -v, --invert-match select non-matching lines 您可以使用-vflag 打印反转匹配项;也就是说,它只匹配那些不包含给定单词的行。例如打印所有不包含单词 bar 的行: $ grep -v bar /path/to/file (阅读更多...)
grep -v "grep"
逐行输入,只输出grep
没有出现的行。如果没有-v
,它将仅输出grep
确实出现的行。详情请参阅man grep
。就
grep
实用程序本身而言,grep
作为参数传递给它的模式与其名称相同并不重要。但在实际出现的大多数情况下grep -v grep
,这并非巧合。grep -v grep
(orgrep -v 'grep'
orgrep -v "grep"
) 通常出现在左侧是命令的管道的右侧。ps
那很可能是你见过的地方。例如,我可能正在寻找名称、路径或命令行参数表明它们与 Xfce 相关的正在运行的程序:我的
grep
命令显示在输出中,但这不是我想要的。当我检查正在运行的内容时,我正在寻找有关已经在运行的进程的信息,而不是因为我努力检查正在运行的内容而正在运行的进程。消除这种干扰的一种常见方法是添加另一个管道
grep -v grep
:grep
without-F
将其模式视为正则表达式而不是固定字符串。xfce
所以另一种方法是编写一个完全匹配但写法不同的正则表达式。例如:这是有效的,因为
[x]
它是一个与 letter 完全匹配的字符类x
。grep
这些流行方法的一个缺点是,即使它们不是grep
您自己运行的命令,它们也会过滤掉包含的行。它们甚至可能不是grep
命令——只是名称、路径或命令行参数包含grep
. 因此,正如Sergiy Kolodyaznyy 所指出的那样,通常这些方式(或任何其他涉及管道输出的方法ps
)都不是真正理想的,正如Nic Hartley 所提到的,其他 方式经常使用pgrep
. 例如:-a
显示完整的命令行。省略它以仅显示进程 ID 号。-f
在完整的命令行中搜索。省略它以仅搜索名称。grep --help
告诉我们-v
flag 的作用:您可以使用
-v
flag 打印反转匹配项;也就是说,它只匹配那些不包含给定单词的行。例如打印所有不包含单词 bar 的行:(阅读更多...)