solaris抱怨grep -e(/ usr / xpg4 / bin / grep)

时间:2013-03-06 23:01:21

标签: ruby shell solaris

我在ruby脚本中有一个简单的shell命令。

command="cat file_name | grep -e 'text1 text2.*'"

它在AIX和Linux上运行良好但在SOLARIS上失败了。我试着看看它使用了哪个grep,它返回/usr/xpg4/bin/grep,这对我来说很好看。请让我知道还有什么可能导致问题。

提前致谢。

1 个答案:

答案 0 :(得分:1)

在Solaris上,我建议一定要使用GNU grep。 (因为你热衷于使用-e选项)

如果您使用的是 Solaris 10 :默认情况下会安装GNU grep,但可能不属于您的PATH,因为它位于/usr/sfw/bin。二进制文件的名称为ggrep

如果您使用的是 Solaris 11 :默认情况下,GNU grep会安装在全局区域中,但默认情况下不会进入本地区域。如果安装它将已经在您的PATH中,但就像在Solaris 10上一样,它被称为ggrep。如果没有安装,则只需执行pkg install gnu-grep

为了使您的脚本可移植,您可以在脚本的开头执行类似的操作:

# Default values
GREP=grep
EGREP=egrep

if [ `uname` == "SunOS" ]; then
  GREP=ggrep
  EGREP=gegrep
fi

..然后在您的脚本中的任何地方,当您想要执行'grep'等时,您会引用$ GREP。