web-dev-qa-db-ja.com

grepを使用して行全体ではなく、一致するWordのみを印刷します

私はbashでのシェルプログラミングに精通していますが、何らかの理由でegrep -o一致する単語のみを印刷することは機能せず、次のようなエラーが表示されます。

環境はPuTTY上のksh unixコンソールであり、linuxまたはubuntu端末ではありません......アドバイスは大歓迎です!

端子入出力

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:同様のスレッドですが、すでに試しました:grepは検索パターンに一致する単語のみを表示できますか?

17
NoobEditor

私はこれがあなたが接続しているSolarisボックスであると仮定しています。 Solarisバージョンのgrepには-oオプションがありません。だからあなたはどちらか

  • solarisボックスにGNU grepをインストールします(/usr/sfw/binに既にインストールされているか、pkg install //solaris/text/gnu-grepでうまくいくかもしれません);または
  • 代わりにawkを使用してください( this SO question を参照)

私の箱を見てください:

$ 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
12
damienfrancois

Perlがある場合:

echo "I am a boy" | Perl -lne '/am/ && print $&'
am
5
Tiago Lopo