一个很酷的技巧可以让你不必在 grep ps 输出时使用 grep -v(是的,我知道 pgrep 存在),那就是将进程的首字母放入字符类中,如ps -ef |grep [s]vn
。这将排除grep svn
包含在输出中。为什么这样做有效?GNU grep。
答案1
Grep 正在搜索正则表达式,因此例如[Pp]rocess
会找到Process
或process
,但一个有趣的副作用是 grep 操作的命令行]
中卡住了 ,这意味着 grep 行不包含单词process
,它包含单词p]rocess
,这不匹配。
因此,您可以通过在 grep 行中放置右括号来有效地删除该单词process
,但仍允许它匹配其他行上的单词。
答案2
方括号是 grep 模式匹配的一部分。基本上grep
可以得到基本的正则表达式:
[12p]进程将扩展为:1进程 2进程
现在,grep 实际上会搜索[1]rocess
[2]rocess
[p]rocess
— — 正如您所见 — — 它不是process
。
方括号是正则表达式中的字符类匹配。您可以在此处阅读有关正则表达式和字符匹配的更多信息: