Wenn ich echo foo bar baz | grep -o -w baz
die Ausgabe ist foo bar baz
(und einem zusätzlichen Zeilenumbruch).
Die erwartete Ausgabe wäre baz
da die Option -o nur den übereinstimmenden Teil anzeigen sollte.
Ich verwende Mac OS X 10.7.1 und die grep-Version ist grep (GNU grep) 2.5.1
Akzeptierte Antwort:
Es gibt eine Problemumgehung durch die Verwendung von grep
Regex-Syntax zum Abgleichen der leeren Zeichenfolge am Anfang und am Ende eines Wortes!
# 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'
Wenn Sie darauf bestehen, grep
zu verwenden ist -w
Flag, versuchen Sie es mit dem vorkompilierten Rudix 2010 grep
binär (grep-2.5.4-1.dmg).
http://rudix.org/packages-ghi.html#grep