2014-07-02 21 views
16

Bash'ta kabuk programlamasına aşinayım, ancak bazı nedenlerle yalnızca eşleşen sözcükleri yazdırmak egrep -o çalışmıyor ve aşağıdaki gibi hata gösteriyor.Sadece eşleşen sözcüğü yazdır, grep aracılığıyla tüm satırı değil

Çevre ksh unix konsolu üzerinde macun ve linux veya ubuntu terminali değil ...... herhangi bir tavsiye takdir edilir!

Terminal giriş & çıkışı:

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: Benzer iplik ama zaten denedim: Can grep show only words that match search pattern?

+0

Sen/yapıştır kodu/terminal çıkış kopyalamak gerekir, ekran görüntüsü göndermek yerine. Ekran görüntüsünüzün okunması zor, ondan kopyalayamaz/yapıştıramaz ve düzenleyemezsiniz (bu gerekli olmalıdır). – Carpetsmoker

+0

GNU grep kullanmıyorsunuz gibi görünüyor; hangi işletim sistemini kullanıyorsunuz? Grep -V' veya 'grep --version' sürümü hakkında bir şey söylüyor mu? – Carpetsmoker

+0

ekran görüntüsü düzgün görüntülenemedi. Ayrıca 5K temsilcisi olarak insanlar soruyu güzelce yayınlamalıdır. –

cevap

11

Bunun bir Solaris olduğunu varsayıyorum Bağlandığınız kutusu. Solaris 'grep sürümü -o seçeneğine sahip değil. Yani ya

  • (zaten /usr/sfw/bin takılmış olabilir veya pkg install //solaris/text/gnu-grep ile şans olabilir) Solaris kutuyu GNU grep yükleyebilirsiniz; ya
  • kullanım awk yerine

benim kutuyu Bkz (this SO question bakınız):

$ 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

* solaris kutusunu tanımlamanın herhangi bir yolu *? – NoobEditor

+1

belki 'uname -a' deneyin? –

+1

Uname-a – damienfrancois

5

Eğer perl varsa:

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