o que grep -oh “[*? com]” faz?

0

Estou tentando conseguir algo e, no experimento que passei no caso a seguir, alguém poderia me explicar como entender o que está acontecendo.

echo " Agent process not running on www.raja.server.local.com" | grep -oh "[*?<com]"
o
c
o
o
o
c
c
o
m

Obrigado.

    
por rɑːdʒɑ 10.12.2015 / 00:14

1 resposta

3

A partir do manpage do grep:

   -o, --only-matching
          Print only the matched (non-empty) parts  of  a  matching  line,
          with each such part on a separate output line.

Nesse caso, o -h não funciona.

grep está procurando por cada um dos caracteres: * , ? , < , c , o e m na cadeia de entrada que você canalizou para ela e imprimindo cada um em uma nova linha como se encontra.

$ echo Zcom\?\<\[\*Z
Zcom?<[*Z
$ echo Zcom\?\<\[\*Z | grep -oh "[*?<com]"
c
o
m
?
<
*
$ 

Além disso, se você usar grep --color -h "[*?<com]" , verá as mesmas letras na mesma ordem destacadas dentro da string de pesquisa ecoada.

    
por 10.12.2015 / 00:25