awk-比较文件并打印两个文件中的行

awk-比较文件并打印两个文件中的行

我正在寻找一种方法来比较两个文件的列 $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

相关内容