Problema do awk: uma 'se condicional da coluna' substitui a entrada da coluna!

1

Estou tentando entender o awk.

Suponha que eu tenha uma entrada:

this header
fred blah 1 blank
fred blah 1 blank
huh blah 2 blank
fred blah 3 blank
fred blah 3 blank

e depois eu uso o seguinte script awk,

#!/usr/bin/awk -f
{
    if ( NF <=2 ) {
            print $0
    };
    if ( NF>=3 && $3=1)
     {
            print $0
    }
}

Espero obter esta saída:

this header
fred blah 1 blank
fred blah 1 blank

Mas, em vez disso, recebo esta saída:

this header
fred blah 1 blank
fred blah 1 blank
huh blah 1 blank
fred blah 1 blank
fred blah 1 blank

onde $ 3 foi transformado na condição.

Por que isso acontece?

E como faço para ajustar meu script awk para obter a saída esperada?

    
por user165209 11.04.2016 / 09:05

1 resposta

2

não confunda

a = b

e

a == b

mesmo com if ( ) test, a = b está definindo o valor de b para a. (mesmo que a seja $3 ).

você deve escrever:

$3 == 1
    
por 11.04.2016 / 09:11

Tags