GNU/Linux >> Znalost Linux >  >> Linux

Proč mi Grep -o -w neposkytuje očekávaný výkon na Mac OS X?

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


Linux
  1. Grep – Proč závorky ve vzoru Grep odstraňují proces Grep z výsledků PS?

  2. Proč není Pgid procesů dítěte PGID rodiče?

  3. Jak zvýraznit slovo ve výstupu „kočka“?

  1. Výstup do Stdout a zároveň Grep do souboru?

  2. Proč Bash neukládá příkazy, které začínají mezerami?

  3. Výstup roury, který se má použít jako vyhledávací specifikace pro grep v Linuxu

  1. proč je výstup `du` často tak odlišný od `du -b`

  2. Jak mohu zacyklit výstup příkazu shellu?

  3. Proč je výstup openssl passwd pokaždé jiný?