只打印匹配的单词,而不是整行通过grep

时间:2014-07-02 09:25:16

标签: unix grep solaris

我熟悉bash中的shell编程,但出于某种原因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:类似的帖子但已尝试过: Can grep show only words that match search pattern?

2 个答案:

答案 0 :(得分:12)

我假设这是您要连接的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

答案 1 :(得分:5)

如果你有perl

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