Perché le parentesi in un grep
modello rimuovono il processo grep dai ps
risultati?
$ ps -ef | grep XXXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep [X]XXX
[...] XXXX
Perché le parentesi in un grep
modello rimuovono il processo grep dai ps
risultati?
$ ps -ef | grep XXXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep [X]XXX
[...] XXXX
Risposte:
Quando si esegue ps -ef | grep string
, grep viene visualizzato nell'output perché string
corrisponde [...] grep string
.
Ma quando si esegue ps -ef | grep [s]tring
la linea non viene visualizzata, perché grep si traduce [s]tring
in string
, mentre ps viene emesso [...] grep [s]tring
e questo non corrispondestring
[]
rappresenta uno qualsiasi dei set di caratteri tra parentesi, in questo caso "s" è l'unico ...
Poiché le parentesi devono essere sfuggite, per bash una volta e per grep di nuovo:
$ ps -ef | grep \\[X\\]XXX
[...] XXXX
[...] grep XXXX
$ ps -ef | grep "\[X\]XXX"
[...] XXXX
[...] grep XXXX