Se faccio echo foo bar baz | grep -o -w baz
l'output è foo bar baz
(e una nuova riga in più).
L'output previsto sarebbe baz
poiché l'opzione -o dovrebbe visualizzare solo la parte corrispondente.
Sto usando Mac OS X 10.7.1 e la versione di grep è grep (GNU grep) 2.5.1
Risposta accettata:
Esiste una soluzione alternativa utilizzando grep
sintassi regex per far corrispondere la stringa vuota all'inizio e alla fine di una parola!
# 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'
Se insisti nell'usare grep
's -w
flag, prova il precompilato Rudix 2010 grep
binario (grep-2.5.4-1.dmg).
http://rudix.org/packages-ghi.html#grep