Mac OS Xでgrep -o -wが期待した出力を提供しないのはなぜですか?

Mac OS Xでgrep -o -wが期待した出力を提供しないのはなぜですか?

これにより、echo foo bar baz | grep -o -w baz出力はfoo bar baz(そして追加の改行)です。
予想される出力は、baz-oオプションが一致する部分のみを表示する必要があるためです。
私はMac OS X 10.7.1を使用しており、grepのバージョンは次のとおりです。grep (GNU grep) 2.5.1

ベストアンサー1

1つの解決策は、正規表現構文を使用してgrep単語の先頭と末尾に空の文字列を一致させることです!

# 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'

grep'フラグを使用する必要がある場合は、プリ-wコンパイルされたRudix 2010grepバイナリ(grep-2.5.4-1.dmg)を試してください。

http://rudix.org/packages-ghi.html#grep

おすすめ記事