2014-07-02 5 views
16

Ich bin vertraut mit Shell-Programmierung in bash, aber aus irgendeinem Grund egrep -o zum Drucken nur übereinstimmende Wörter funktioniert nicht und zeigt Fehler wie folgt.Drucken Sie nur übereinstimmende Wort, nicht die gesamte Zeile durch grep

Umgebung ist Ksh Unix-Konsole auf Putty und nicht Linux oder Ubuntu-Terminal ...... jeder Rat ist zu schätzen!

Terminal-Eingang & Ausgang:

AB12 $ echo "i am a boy" | grep -w "am" 
i am a boy 
AB12 $ echo "i am a boy" | egrep -o "am" 
egrep: illegal option -- o 
usage: egrep [ -bchilnsv ] [ -e exp ] [ -f file ] [ strings ] [ file ] ... 
AB12 $ echo$ 
ksh: echo$: not found 
AB12 $ echo $SHELL 
/bin/ksh 
AB12 $ echo "i am a boy" | grep -o "am" 
grep: illegal option -- o 
Usage: grep -hblcnsviw pattern file . . . 
AB12 $ 

PS: ähnlicher Thread aber schon versucht: Can grep show only words that match search pattern?

+0

Sie sollten Kopieren/Einfügen-Code/Terminal-Ausgabe, anstatt einen Screenshot zu posten. Ihr Screenshot ist schwer zu lesen, Sie können ihn nicht kopieren und einfügen und können ihn nicht bearbeiten (falls erforderlich). – Carpetsmoker

+0

Es sieht so aus, als ob du GNU grep nicht verwendest; Welches Betriebssystem verwendest du? Bedeutet 'grep -V' oder' grep --version' etwas über die Version? – Carpetsmoker

+0

Posted Screen Shot nicht richtig sichtbar. Auch als 5K rep Leute sollten die Frage gut posten. –

Antwort

11

Ich gehe davon aus das ist ein Solaris-Box Sie sich verbinden. Die Version grep von Solaris verfügt nicht über die Option -o. So können Sie entweder

  • installieren Sie das GNU grep auf Ihrer Solaris-Box (es könnte bereits in /usr/sfw/bin installiert werden, oder Sie könnten Glück haben mit pkg install //solaris/text/gnu-grep); oder
  • Verwendung awk statt (siehe this SO question)

auf meiner Box Siehe:

$ uname 
SunOS 
$ echo "i am a boy" | grep -o "am" 
grep: illegal option -- o 
Usage: grep -hblcnsviw pattern file . . . 
$ echo "i am a boy" | /usr/sfw/bin/ggrep -o "am" 
am 
+0

wie kann ich die * solaris box * identifizieren? – NoobEditor

+1

vielleicht versuchen "uname -a"? –

+1

Siehe die Ausgabe von uname -a – damienfrancois

5

Wenn Sie perl:

echo "I am a boy" | perl -lne '/am/ && print $&' 
am