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

これにより、80年代のユーティリティではなく90年代のユーティリティが提供されます(過言ではありません...)。

そうすれば、あなたgrepの意志はもう少し標準のように振る舞いますgrep

egrepまたは代わりに使用できますgrep -E

しかし、ここでawkはの上位セットなので、egrepまったくそうする必要はありません。egrep

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

に行をリンクするには、を|使用することをお勧めしますpaste。最後の2つのコマンドをに置き換えるpaste -s -d '|' -か、以下を使用してすべての操作を実行できますawk

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

関連情報