Se você estiver tentando usar os valores em r.txt
como chaves para extrair registros de várias linhas correspondentes de s.txt
, tente
awk 'NR==FNR {u[$2]++; next} $NF in u' r.txt RS= s.txt
- process
r.txt
com o separador de registro padrão (nova linha), construindo a matriz associativau
com chaves do segundo campo separado por espaço em branco; então - desmarque o separador de registro
RS=
para alternar para modo de parágrafo para o segundo arquivo - processar
s.txt
no modo de parágrafo, ou seja, tratando cada bloco separado de linha em branco como um único registro, cujo último valor de campo$NF
pode então ser usado como um valor de pesquisa emu
- se
$NF
existir emu
, imprima o registro inteiro
Para adicionar espaço entre os registros correspondentes:
Se você tiver o GNU awk ( gawk
), pode usar a variável especial RT
para adicionar os separadores de parágrafo originais:
gawk 'NR==FNR {u[$2]++; next} $NF in u {print $0 RT}' r.txt RS= s.txt
Mais geralmente, você pode acrescentar uma nova linha adicional após cada registro correspondente:
awk 'NR==FNR {u[$2]++; next} $NF in u {print $0 "\n"}' r.txt RS= s.txt
ou adicione uma nova linha extra ao separador de campos saída padrão:
awk 'NR==FNR {u[$2]++; next} $NF in u' r.txt RS= ORS='\n\n' s.txt