grep: fim do delimitador de palavras não está funcionando?

2

Por que nas seguintes (e)grep tentativas, egrep não consegue identificar o delimitador de fim de palavra? ( b )?

$ echo -n "my-pc is beautiful" | egrep  'my-pc\b'
my-pc is beautiful
/home/pkaramol
$ echo -n "my-pc-vol2 is beautiful" | egrep  'my-pc\b'
my-pc-vol2 is beautiful

Os mesmos são os resultados com grep ?

    
por pkaramol 11.07.2018 / 19:34

1 resposta

3

Ele identifica isso bem, mas grep e egrep imprimem a linha inteira de uma correspondência, a menos que a opção -o seja usada:

-o, --only-matching

Prints only the matching part of the lines.

Eu acho que você quer:

$ echo -n "my-pc is beautiful" | egrep -o 'my-pc\b'
my-pc

Um limite de palavra é qualquer caractere não pertencente à palavra. Os caracteres da palavra são: [a-zA-Z0-9_] . Portanto, - não é um caractere de palavra.

    
por 11.07.2018 / 19:38