我正在寻找一种方法来比较两个文件的列 $2 和列 $1,如果它们相同,则打印第一个文件中的所有列以及第二个文件中的列 $2。
文件_1.txt
apple tree 5
great see 10
see apple 3
tree bee 11
make change 2
文件_2.txt
apple 5.21
around 6.21
great 2
bee 1
see 7.43
tree 3
输出应如下所示:
apple tree 5 3
great see 10 7.43
see apple 3 5.21
tree bee 11 1
我试过
awk 'NR==FNR{a[$2];next} ($1 in a) {print}' file_1.txt file_2.txt > output.txt
显然,它只会打印 file_2.txt 的匹配行。那么,如何为第一个文件的列添加打印语句?
我尝试读取数组中的更多列,例如
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
这显然是错误的;)
非常感谢您的帮助。
答案1
怎么样
$ 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