Se você tem o GNU awk
(disponível no repositório via pacote gawk
), que suporta matrizes multidimensionais, você poderia fazer
gawk 'NR==FNR {a[$1][$2]++; next} $1 in a {for (x in a[$1]) print $0, x}' OFS="\t" file_2.txt file_1.txt
Ex.
$ gawk 'NR==FNR {a[$1][$2]++; next} $1 in a {for (x in a[$1]) print $0, x}' OFS="\t" file_2.txt file_1.txt
apple 2.5 5 7.2 :::N
great 3.8 10 3.6 :::ADJ
see 7.6 3 4.9 :::V
tree 5.4 11 5 :::N
back 8.9 2 2.1 :::ADJ
back 8.9 2 2.1 :::N
Caso contrário, se a ordem de saída não for importante, a solução mais fácil é provavelmente usar o comando join
:
$ join -t $'\t' <(sort file_1.txt) <(sort file_2.txt)
apple 2.5 5 7.2 :::N
back 8.9 2 2.1 :::ADJ
back 8.9 2 2.1 :::N
great 3.8 10 3.6 :::ADJ
see 7.6 3 4.9 :::V
tree 5.4 11 5 :::N