Bash 正则表达式问题

Epi*_*aph 1 bash regex

我在用

ps -ef | grep java | wc -l
Run Code Online (Sandbox Code Playgroud)

查找在任何给定时间运行的 java 进程数。

上面的命令显然也在结果中计算了“ps -ef | grep java”命令。

为了避免这种情况,我发现我可以使用

ps -ef | grep [j]ava | wc -l
Run Code Online (Sandbox Code Playgroud)

它工作正常。但是,我想弄清楚为什么它能够从结果中跳过原始命令。

Oes*_*sor 10

因为当您为 [j]ava 进行 grep 时,该进程被命名为“grep [j]ava”。'[j]ava' 与正则表达式 '[j]ava' 不匹配,因此不会出现在结果中。