2014-07-02 23 views
16

Jestem zaznajomiony z programowaniem powłoki w bash, ale z jakiegoś powodu egrep -o, aby wydrukować tylko pasujące słowa, nie działa i wyświetla błąd jak poniżej.Wydrukuj tylko pasujące słowo, nie całą linię przez grep

Środowisko jest konsolą unix ksh na kitach, a nie linuxie lub terminalu ubuntu ...... każda rada jest doceniana!

Terminal wejściowy & wyjściowa:

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: Podobny wątek ale próbowałem już: Can grep show only words that match search pattern?

+0

należy skopiować kod pasta/wyjście/terminala, zamiast publikować zrzut ekranu. Twój zrzut ekranu jest trudny do odczytania, nie można go kopiować ani wklejać i nie można go edytować (jeśli to konieczne). – Carpetsmoker

+0

Wygląda na to, że nie używasz GNU grep; z jakiego systemu operacyjnego korzystasz? Czy 'grep -V' lub' grep --version' mówią coś o wersji? – Carpetsmoker

+0

opublikowany zrzut ekranu niewidoczny prawidłowo. Również jako 5K rep ludzie powinni ładnie zadawać pytania. –

Odpowiedz

11

jestem przy założeniu, że jest to Solaris box łączysz się. Wersja grep firmy Solaris nie ma opcji -o. Więc może albo

  • zainstalować GNU grep na polu Solaris (to może być już zainstalowane w /usr/sfw/bin, lub może masz szczęście z pkg install //solaris/text/gnu-grep); lub
  • wykorzystanie awk zamiast (patrz this SO question)

Zobacz na moim polu:

$ 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

jakikolwiek sposób identyfikacji skrzynki * solaris *? – NoobEditor

+1

może wypróbować 'uname -a'? –

+1

Zobacz dane wyjściowe uname -a – damienfrancois

5

Jeśli masz perl:

echo "I am a boy" | perl -lne '/am/ && print $&' 
am 
Powiązane problemy