Seu código:
awk '{if ($2 == q) print $1; else print$2 }' input_file
Isso imprimirá $1
se $2
for igual à awk
variable q
. Essa variável não é inicializada, portanto, o teste provavelmente nunca será verdadeiro, a menos que você defina q
como a sequência "q"
na linha de comando:
awk -vq="q" '{if ($2 == q) print $1; else print $2 }'
O que você provavelmente quer é comparar com "q"
no próprio código:
awk '{if ($2 == "q") print $1; else print $2 }' input_file
Ou, de uma maneira mais idiomática de dizer a mesma coisa:
awk '$2 == "q" { print $1 } $2 != "q" { print $2 }'
ou
awk '$2 == "q" { print $1; next } { print $2 }'
ou, como mostra a solução da RomanPerekhrest , usando o operador ternário ?:
.