Awk: compara dois arquivos

4

Eu tenho um arquivo1.txt

USA Joe 123.123.123
Russia Marry 458.786.892
Canada Greg 151.844.165
Latvia Grace 125.895.688

e arquivo2.txt

1 123.123.123
2 151.844.165
3 465.879.515

e eu quero criar um novo arquivo result.txt onde eu imprimo somente minhas linhas que endereços (xxx.xxx.xxx) estão no arquivo1 e no arquivo2, então meu resultado deve ser

USA Joe 123.123.123
Canada Greg 151.844.165

Eu preciso usar o awk, mas como eu preciso usá-lo para os dois arquivos?

    
por user3334375 31.05.2015 / 19:34

2 respostas

5

Você pode tentar:

awk 'FNR==NR{a[$2];next};$NF in a' file2.txt file1.txt > result.txt
    
por 31.05.2015 / 19:37
4

Talvez seja assim:

join -1 3 -2 2 <(sort -k 3 file1.txt) <(sort -k 2 file2.txt) | awk '{ print $2, $3, $1 }'

Isto:

  • não lê nenhum arquivo totalmente na memória
  • ainda usa awk(1) ;)
por 31.05.2015 / 20:24