Você está fazendo uma operação de junção relacional. Há um comando padrão do Unix para isso: join
. Eu gostaria que mais pessoas soubessem sobre essa ferramenta maravilhosa!
O comando join
une dois arquivos em um campo comum. No entanto, os dois arquivos precisam ser classificados nesse campo.
O campo comum é o campo 2 do primeiro arquivo ( file1.txt
) e o campo 1 do segundo arquivo ( file2.txt
). Classifique os arquivos nesses campos:
$ sort -k2,2 -o file1.txt file1.txt
$ sort -k1,1 -o file2.txt file2.txt
Em seguida, execute a união nesses campos (leia o manual para join
), especificando que queremos apenas ter o campo 1 do primeiro arquivo e o campo 2 do segundo arquivo como saídas, e classificar o resultado (se necessário) ):
$ join -1 2 -2 1 -o 1.1,2.2 file1.txt file2.txt | sort
word_1 root_of_word_1
word_2 root_of_word_2
word_3 root_of_word_3
word_4 root_of_word_1