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.txtcom o separador de registro padrão (nova linha), construindo a matriz associativaucom 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.txtno modo de parágrafo, ou seja, tratando cada bloco separado de linha em branco como um único registro, cujo último valor de campo$NFpode então ser usado como um valor de pesquisa emu - se
$NFexistir 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