Pokud udělám echo foo bar baz | grep -o -w baz
výstup je foo bar baz
(a nový řádek navíc).
Očekávaný výstup by byl baz
protože volba -o by měla zobrazit pouze odpovídající část.
Používám Mac OS X 10.7.1 a verze grep je grep (GNU grep) 2.5.1
Přijatá odpověď:
Existuje řešení pomocí grep
syntaxe regulárního výrazu pro shodu prázdného řetězce na začátku a konci slova!
# 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'
Pokud trváte na použití grep
's -w
flag, zkuste předkompilovaný Rudix 2010 grep
binární (grep-2.5.4-1.dmg).
http://rudix.org/packages-ghi.html#grep
Použít Sed k nahrazení řetězce řetězcem obsahujícím název adresáře (tj. lomítko „/“)?
Ssh – Jak funguje Tcp-keepalive v Ssh?