2014-07-02 16 views
16

Ho familiarità con la programmazione della shell in bash, ma per qualche motivo egrep -o per stampare solo le parole corrispondenti non funziona e visualizza l'errore come di seguito.Stampa solo parola corrispondente, non intera riga attraverso grep

L'ambiente è ksh unix console su stucco e non terminale Linux o Ubuntu ...... qualsiasi consiglio è apprezzato!

terminale di ingresso & uscita:

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: filetto simili ma provato già: Can grep show only words that match search pattern?

+0

È necessario copiare/incollare codice/terminale di uscita, piuttosto che pubblicare uno screenshot. Il tuo screenshot è difficile da leggere, non puoi copiare/incollare da esso e non puoi modificarlo (se necessario). – Carpetsmoker

+0

Sembra che tu non stia usando GNU grep; quale sistema operativo stai usando? 'Grep -V' o' grep --version' dice qualcosa sulla versione? – Carpetsmoker

+0

schermata visualizzata non visibile correttamente. Inoltre, le persone di reputazione 5K dovrebbero porre domande in modo corretto. –

risposta

11

sto assumendo questo è un Solaris box si sta collegando. La versione di Solaris di grep non ha l'opzione -o. Così è possibile

  • installare il grep GNU sulla tua casella di Solaris (potrebbe già essere installato in /usr/sfw/bin, o si potrebbe avere fortuna con pkg install //solaris/text/gnu-grep); o
  • uso awk (si veda this SO question)

Vedi sulla mia macchina:

$ 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

un modo per identificare la * scatola solaris *? – NoobEditor

+1

forse prova 'uname -a'? –

+1

Vedere l'output di uname -a – damienfrancois

5

Se hai perl:

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