Si je fais echo foo bar baz | grep -o -w baz la sortie est foo bar baz (et une nouvelle ligne supplémentaire).
La sortie attendue serait baz car l'option -o ne doit afficher que la partie correspondante.
J'utilise Mac OS X 10.7.1 et la version de grep est grep (GNU grep) 2.5.1
Réponse acceptée :
Il existe une solution de contournement en utilisant le grep Syntaxe regex pour faire correspondre la chaîne vide au début et à la fin d'un mot !
# 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 vous insistez pour utiliser grep 's -w flag, essayez le précompilé Rudix 2010 grep binaire (grep-2.5.4-1.dmg).
http://rudix.org/packages-ghi.html#grep