ajuste a sintaxe do grep do linux para solaris

3

O seguinte comando

grep -w '^[^#]* machine_VIP' /etc/hosts | head -1 | awk '{print $1}'

funciona bem no linux (ele captura o alias machine_VIP e retorna o endereço IP de / etc / hosts e ignora as linhas de comentários)

Exemplo

cat /etc/hosts
5.5.5.5  GH_T  T1 T2 T3 # machine_VIP
# 198.2.3.12 MON1 MON2  machine_VIP
18.2.4.12 W1 # machine_VIP # machine_VIP # machine_VIP
192.9.200.77 machine_linux1 machine_linux2  machine_VIP
192.9.200.78 machine_linux10 machine_linux20 machine_VIP_test
grep -w '^[^#]* machine_VIP' /etc/hosts | head -1 | awk '{print $1}'
192.9.200.77

mas no Solaris eu tenho os mesmos hosts e quando executo o comando eu não obtenho nada na saída.

Então, como encaixar o comando no Solaris?

    
por maihabunash 09.11.2014 / 15:59

2 respostas

2

No Solaris grep, a opção -w significa que o padrão inteiro deve corresponder apenas a uma palavra, que é diferente do significado de -w do GNU grep que a correspondência deve formar palavras inteiras .

Se você adicionar um $ ao final do seu padrão, isso funcionará com o arquivo de exemplo acima e, em seguida, você não precisará da opção -w:

grep '^[^#]* machine_VIP$' /etc/hosts | head -1 | awk '{print $1}'

... ou você poderia, é claro, instalar o GNU grep em sua máquina solaris se isso for viável.

    
por 09.11.2014 / 17:31
1

Com o Solaris 11, use o GNU grep já instalado: /usr/gnu/bin/grep

    
por 09.11.2014 / 17:51