Que tal
$ awk 'NR==FNR {a[$1]=$2; next} $2 in a {print $0, a[$2]}' OFS='\t' file_2.txt file_1.txt
apple tree 5 3
great see 10 7.43
see apple 3 5.21
tree bee 11 1
Estou procurando uma maneira de comparar a coluna $ 2 e a coluna $ 1 de dois arquivos e, se forem iguais, imprima todas as colunas do primeiro arquivo com a coluna $ 2 do segundo arquivo.
arquivo_1.txt
apple tree 5
great see 10
see apple 3
tree bee 11
make change 2
arquivo_2.txt
apple 5.21
around 6.21
great 2
bee 1
see 7.43
tree 3
A saída deve se parecer com:
apple tree 5 3
great see 10 7.43
see apple 3 5.21
tree bee 11 1
Eu tentei
awk 'NR==FNR{a[$2];next} ($1 in a) {print}' file_1.txt file_2.txt > output.txt
que obviamente apenas imprime as linhas correspondentes do arquivo_2.txt. Então, como eu adiciono a declaração print para as colunas do primeiro arquivo?
Eu tentei ler mais colunas em uma matriz como
awk 'NR==FNR{a[$2];b[$1];c[$3];next} ($1 in a) {print a, b c}' file_1.txt file_2.txt > output.txt
que está obviamente errado;)
A ajuda é muito apreciada.
Que tal
$ awk 'NR==FNR {a[$1]=$2; next} $2 in a {print $0, a[$2]}' OFS='\t' file_2.txt file_1.txt
apple tree 5 3
great see 10 7.43
see apple 3 5.21
tree bee 11 1