awk
pode ser uma escolha melhor aqui:
awk 'BEGIN{a[71161] a[71072] a[72617]}; $2 in a' < mainfile
Ou:
awk '$2 ~ /^(72617|71072|71161)$/' < mainfile
Ou:
awk '$2 == "71161" || $2 == "71072" || $2 == "72617"' < mainfile
(Cuidado com as implementações do POSIX awk (não as tipicamente encontradas nas distribuições atuais do Linux), o operador ==
aplicado às strings testa se as duas strings combinam as mesmas , que podem ser diferente de ser igual a Por exemplo, em um sistema GNU em uma localidade UTF-8, um POSIX awk retornaria verdadeiro para "71161" == "٧١١٦١"
, porque nas versões atuais dessas localidades do GNU, os dígitos árabes orientais agrupam o igual aos equivalentes do árabe ocidental (inglês), para evitar que você queira definir LC_ALL
para C
.
Você também pode fazer comparações numéricas com:
awk '$2 == 71161 || $2 == 71072 || $2 == 72617' < mainfile
Que também retornaria linhas onde o segundo campo é 71161.0 ou 71.161e3 ou 0x115f9 (para GNU awk
, você precisa passar POSIXLY_CORRECT no ambiente para números hexadecimais a serem considerados).