grep - warum entfernen Klammern im grep-Muster den grep-Prozess aus den ps-Ergebnissen?

12

Warum grepentfernen Klammern in einem Muster den Grep-Prozess aus den psErgebnissen?

$ ps -ef | grep XXXX

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


$ ps -ef | grep [X]XXX

[...] XXXX
Gilles 'SO - hör auf böse zu sein'
quelle
2
Dies ist in erster Linie ein großartiger kleiner Trick!
Kevin Cantu
Weitere Antworten auf diese Frage finden Sie hier: unix.stackexchange.com/questions/78771/…
erch

Antworten:

20

Wenn Sie ausführen ps -ef | grep string, wird grep in der Ausgabe angezeigt, da stringÜbereinstimmungen vorliegen[...] grep string .

Aber, wenn Sie laufen ps -ef | grep [s]tringdie Zeile wird nicht angezeigt, da grep übersetzt [s]tringzu string, während ps Ausgänge [...] grep [s]tring, und das nicht übereinstring

Stefan
quelle
1
... weil es sich []um einen beliebigen Zeichensatz in Klammern handelt, in diesem Fall ist "s" der einzige ...
Bis auf weiteres angehalten.
Ja ... Ich hatte wirklich Probleme, dies auf Englisch zu erklären ... es ist nicht meine Muttersprache :)
Stefan
2

Weil die eckigen Klammern entfernt werden müssen, um einmal zu schlagen und noch einmal zu grep:

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

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


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

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

quelle