Problema com grep, egrep in solaris

0

Eu tenho um problema ao executar este comando no Solaris:

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

Recebi esta mensagem de erro:

egrep:illegal option -- E
usage: egrep [-bchilnsv] [-e exp] [-f file] [string] [file] ...
egrep:syntax error
    
por user159010 01.03.2016 / 15:56

1 resposta

2

No Solaris, no ambiente padrão, você obtém utilitários antiquados.

Para obter utilitários mais modernos, você precisa atualizar $PATH :

PATH='getconf PATH':$PATH export PATH

Isso vai te dar utilitários dos anos 90, em vez de a partir dos anos 80 (isso não é um exagero ...).

Então, seu grep se comportará mais como um padrão grep .

Como alternativa, você pode usar egrep em vez de grep -E .

Mas aqui, awk sendo um superconjunto de egrep , você não precisa de egrep .

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

Para unir linhas com | , é melhor usar paste . Seus dois últimos comandos podem ser substituídos por paste -s -d '|' - . Ou você pode fazer tudo em awk :

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

Tags