Linux

任何避免使用 grep -v 的方法

  • August 16, 2018

跨管道執行 grep 過濾時,如下例所示,

$ ps -ef | grep 24604 
username   18660 24604  0 16:38 pts/3    00:00:00 ps -ef
username   18661 24604  0 16:38 pts/3    00:00:00 grep --color=auto 24604
username   24604 23548  0 Aug13 pts/3    00:00:00 /bin/bash

grep 命令本身是結果的一部分,通常 - 我用另一個grep -v,即過濾掉它:

$ ps -ef | grep 24604 | grep -v grep
username   20375 24604  0 16:40 pts/3    00:00:00 ps -ef
username   24604 23548  0 Aug13 pts/3    00:00:00 /bin/bash

是否有一個grep參數可以過濾掉 grep 字元串?

(或任何其他避免的技巧grep -v?)

這通常通過在第一個字元周圍放置方括號來處理:

$ ps auxw | grep [c]ron
root      5710  0.0  0.0  10640  1800 ?        Ss   14:41   0:00 /usr/sbin/cron
$

這有效,因為cron不再出現在greps 命令行 (

$$ c $$羅恩)。一種更現代的方法是使用該pgrep命令(如果可用)。

怎麼樣:

pgrep -l 24604

這實際上取決於使用情況,但pgrep通常更適合自動化,這可能是您想要做的。

引用自:https://serverfault.com/questions/926598