grep -v“ grep”とはどういう意味ですか?


17

私はgrep -v "grep"何を意味し、それは何を意味するのだろうと思っていましたか?


8
次のことができますman grepコマンドのリファレンスマニュアルページを読んで、または特定のコマンドの詳細についてはするには(INC。のgrep)することができますinfo grep....すなわち。あなたのシステムには、たいてい非常に便利なドキュメントがあります。
guiverc

12
grep -v "grep"プロセスを一覧表示するときにgrep自体を除外するために使用されることが多く、通常は3つのパイプラインが関係しますが、pgrep「配管」をはるかに少なくできるような優れた方法があります。参照してくださいunix.stackexchange.com/q/74185/85039
Sergiy Kolodyazhnyy

13
それはそれを行います。ルートキットを呼んでいgrepます。
ジョシュア

通常のような非セキュリティ関連のコンテキストで使用されるps aux | grep fubar | grep -v grepところfubaridが、私はそれを殺すことができるので、検索したい応答を停止していること、私が開発していますものです、と。それらが2つあると仮定するkillallと、不適切です。
nigel222

回答:


69

grep -v "grep"行ごとに入力を取り、grep表示されない行のみを出力します。がなければ-v、それが現れる行のみを出力grep ます。詳細man grepをご覧ください。

限りgrepユーティリティ自体が懸念され、パターンそれの重要でないことをgrep引数として渡されたが、その名前と同じです。しかし、grep -v grep実際に現れるほとんどの場合、これは偶然ではありません。

grep -v grep(またはgrep -v 'grep'または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コマンドは、出力に示されたが、それは私が探しているものではないのです。実行中のものを調べるための努力のためだけに実行されているプロセスではなく、実行中のものを調べたときに既に実行されていたプロセスに関する情報を探しています。

この気晴らしを削除する1つの一般的な方法は、別のパイプを追加すること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]は、文字に正確に一致する文字クラスであるため機能しxます。


これらの一般的なメソッドの欠点の1つは、自分が実行しgrepgrepコマンドではない場合でも、それらを含む行を除外することです。それらはgrepコマンドでさえないかもしれません-名前、パス、またはコマンドライン引数にが含まれ ているコマンドだけgrepです。したがって、Sergiy Kolodyazhnyyが指摘したように、多くの場合、これらの方法(またはの出力をパイピングすることを含む他のアプローチ)のどちらも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 完全なコマンドラインで検索します。省略して名前のみを検索します。

10
また、言及する価値があるかもしれないpgrepの別の代替のためにps | grep
基金モニカの訴訟

8

grep --help何を教えてくれる-vフラグが行われます。

-v, --invert-match        select non-matching lines

-vフラグを使用して、一致を反転させることができます。つまり、指定された単語を含まない行のみに一致します。たとえば、単語barを含まないすべての行を印刷します。

$ grep -v bar /path/to/file

続きを読む...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.