我正在尝试使用awk compare columns from two files, impute values of another column中的类似命令,并查看了许多与我类似的问题 awk search column from one file, if match print columns from both files, How to import fields in other columns corresponding to one common field in two files with `NA` in all unmatched columns, awk compare 2 files, 2 fields different order in the file, print or merge match and non match lines 具有更多字段的文件,但我无法使其正常工作。我还从http://theunixshell.blogspot.com/2012/12/i-have-two-files-file-1-contains-3.html读了一下,看它是否可以工作,但是我仍然遇到问题:
文件1:
xx NC1 12 13 ! pro
xy NC1 15 17 ! pro
yx NC1 18 20 ! pro
yy NC1 22 28 ! pro
文件2
xx ds
xy jt
yy wp
所需的输出:
xx NC1 12 13 ! pro ds
xy NC1 15 17 ! pro jt
yx NC1 18 20 ! pro NA
yy NC1 22 28 ! pro wp
我正在使用的代码:
awk 'NR==FNR { a[$1]=$6; next }{print $0 " " ($2 in a ? a[$2] : "NA")}' file2 file1
因此,基本上我的输出为我提供了一个全为“ NA”的新列,这显然不是我想要的内容。
输出:
xx NC1 12 13 ! pro NA
xy NC1 15 17 ! pro NA
yx NC1 18 20 ! pro NA
yy NC1 22 28 ! pro NA
答案 0 :(得分:2)
您很近。
awk 'NR==FNR {a[$1]=$2;next}{print $0, ($1 in a ? a[$1]:"NA")}' f2 f1
您的问题是,您将file2
作为第一个参数,但是,您认为是file1
。 file2
根本没有$6
。