grep-なぜgrepパターンの括弧がpsの結果からgrepプロセスを削除するのですか?


12

grepパターン内の括弧がps結果からgrepプロセスを削除するのはなぜですか?

$ ps -ef | grep XXXX

[...] XXXX
[...] grep XXXX


$ ps -ef | grep [X]XXX

[...] XXXX

2
そもそもこれは素晴らしい小さなトリックです!
ケビンCantu

この質問のさらなる回答は、ここにunix.stackexchange.com/questions/78771/で
erch

回答:


20

実行するとps -ef | grep stringstring一致するためgrepが出力に表示されます[...] grep string

ただし、実行ps -ef | grep [s]tringすると行は表示されません。これは、grepがに変換さ[s]tringstring、psが出力され[...] grep [s]tring、それが一致しないためですstring


1
... []大括弧内の文字セットのいずれかを表しているためです。この場合、「s」のみが使用されます...
追って通知があるまで一時停止します。

ええ...私は本当にこれを英語で説明するのに苦労しました...それは私の第一言語ではありません:)
ステファン

2

ブラケットをエスケープする必要があるため、bashを1回繰り返し、grepを再度繰り返します。

$ ps -ef | grep \\[X\\]XXX

[...] XXXX
[...] grep XXXX


$ ps -ef | grep "\[X\]XXX"

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