为什么grep
模式中的括号会从结果中删除 grep 过程ps
?
$ ps -ef | grep XXXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep [X]XXX
[...] XXXX
答案1
当您运行时ps -ef | grep string
,grep 会显示在输出中,因为string
匹配[...] grep string
。
但是,当您运行时,ps -ef | grep [s]tring
不会显示该行,因为 grep 转换[s]tring
为string
,而 ps 输出[...] grep [s]tring
,并且不匹配string
答案2
因为括号需要转义,对于 bash 一次,对于 grep 再次:
$ ps -ef | grep \\[X\\]XXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep "\[X\]XXX"
[...] XXXX
[...] grep XXXX