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
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?