awk比较两个文件并用NA填充空白行

时间:2018-07-04 21:12:54

标签: unix awk

我正在尝试使用awk compare columns from two files, impute values of another column中的类似命令,并查看了许多与我类似的问题 awk search column from one file, if match print columns from both filesHow to import fields in other columns corresponding to one common field in two files with `NA` in all unmatched columnsawk 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

1 个答案:

答案 0 :(得分:2)

您很近。

awk 'NR==FNR {a[$1]=$2;next}{print $0, ($1 in a ? a[$1]:"NA")}' f2 f1

您的问题是,您将file2作为第一个参数,但是,您认为file1file2根本没有$6