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.