Solaris 中的 grep、egrep 问题

Solaris 中的 grep、egrep 问题

当我在 Solaris 中执行此命令时遇到问题:

grep -Ev "(^#|^EBM_SERVER|^$)" ${EBM_CONF} | awk -F, '{print $2"|"}' | tr -d "\n" | sed 's/|$//g'

我收到此错误消息:

egrep:illegal option -- E
usage: egrep [-bchilnsv] [-e exp] [-f file] [string] [file] ...
egrep:syntax error

答案1

在 Solaris 上,在默认环境中,您将获得过时的实用程序。

要获得更多现代实用程序,您需要更新$PATH

PATH=`getconf PATH`:$PATH export PATH

这将为您提供 90 年代的实用程序,而不是 80 年代的实用程序(这并不夸张......)。

那么你的grep意志就会表现得更像一个标准grep

或者,您可以使用egrep代替grep -E.

但在这里,awk作为 的超集,你根本egrep不需要。egrep

< "$EBM_CONF" awk -F, '! /^#|^EBM_SERVER|^$/ {print $2"|"}' |
   tr -d "\n" |
   sed 's/|$//g'

要使用 来连接行|,最好使用paste.您的最后两个命令可以替换为paste -s -d '|' -.或者你可以用以下方式完成整个事情awk

< "$EBM_CONF" awk -F, '! /^#|^EBM_SERVER|^$/ {printf "%s", sep $2; sep = "|"}'

相关内容