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