GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum liefert Grep -o -w unter Mac OS X nicht die erwartete Ausgabe?

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


Linux
  1. Warum ich von Mac zu Linux gewechselt bin

  2. Ausgabe nach Stdout und gleichzeitig Grep in eine Datei?

  3. Warum speichert Bash keine Befehle, die mit Leerzeichen beginnen?

  4. Warum kann ich die Ausgabe von Hintergrundprozessen sehen?

  5. Pipe-Ausgabe zur Verwendung als Suchspezifikation für grep unter Linux

Warum nicht Softwarepakete aus dem Internet installieren

Warum liefert `md5sum` nicht den gleichen Hash wie das Internet?

warum unterscheidet sich die Ausgabe von `du` oft so sehr von `du -b`

Wie kann ich die Ausgabe eines Shell-Befehls durchlaufen?

Ausgabe von ps aux | beobachten grep blah in tmux funktioniert nicht?

Warum nicht ICMP blockieren?