awk:为什么保存在数组中的列无法打印出来?

时间:2017-02-26 19:14:53

标签: awk

为什么无法打印保存在数组中的列?

我有以下两个文件:

第一个文件名为“file1:”

a       1  
b       2  
c       3  

第二个文件名为“file2”:

1       100  
2       200  
3       300  

当我运行以下命令时:

awk 'NR==FNR{a[$1]=$2;next}{print $0 "\t" a[$1]}' file2 file1   

我只得到以下输出(基本上我只打印了file1):

a       1  
b       2  
c       3   

我期望的输出应该是:

a    1    100  
b    2    200  
c    3    300   

我无法弄清楚为什么没有打印出[$ 1]。你能帮帮我吗?非常感谢!

杰夫

1 个答案:

答案 0 :(得分:1)

您使用了错误的密钥,因此该密钥的数组元素为空

awk 'NR==FNR {a[$1]=$2; next} 
             {print $0, a[$2]}' file2 file1

或者如果密钥已按照示例中的顺序排序,

join -12 -21 file1 file2 -o1.1,1.2,2.2