Si hago echo foo bar baz | grep -o -w baz
la salida es foo bar baz
(y una nueva línea adicional).
El resultado esperado sería baz
ya que la opción -o solo debería mostrar la parte coincidente.
Estoy usando Mac OS X 10.7.1 y la versión de grep es grep (GNU grep) 2.5.1
Respuesta aceptada:
Hay una solución mediante el uso de grep
¡Sintaxis de expresiones regulares para hacer coincidir la cadena vacía al principio y al final de una palabra!
# grep regex syntax for matching words only
man grep | less -p '\<'
# POSIX 1003.2 regular expression syntax for matching words only
# should work for sed, ed, ...
man re_format | less -p '\[\[:<:\]\]'
echo 'foo bar baz' | egrep -o '\<baz\>'
echo 'foo bar baz' | sed -n '/.*[[:<:]]\(baz\)[[:>:]].*/s//\1/p'
Si insiste en usar grep
‘s -w
flag, pruebe el Rudix 2010 precompilado grep
binario (grep-2.5.4-1.dmg).
http://rudix.org/packages-ghi.html#grep