您好我有两个csv文件具有相同的列,如
x.csv
column1,column2
A,2
B,1
y.csv
column1,column2
A,1
C,2
我希望输出如下:
z.csv
column1,column2
A,2
B,1
C,2
即。对于第一列中的匹配数据,我想保留x.csv
记录和y.csv
中的新字段(如A,2)我只想追加它(如C,2)。< / p>
由于
答案 0 :(得分:3)
$ awk -F, 'NR==FNR{a[$1]; print; next} ! ($1 in a)' x.csv y.csv
column1,column2
A,2
B,1
C,2
-F,
这告诉awk使用逗号作为字段分隔符
NR==FNR{a[$1]; print; next}
在阅读第一个文件(NR==FNR
)时,这会告诉awk(a)将$1
添加为关联数组a
的关键字,(b)打印该行, (c)跳过剩余的命令并跳转到文件中的next
行。
! ($1 in a)
如果我们到达这里,那意味着我们正在处理第二个文件。在这种情况下,如果第一个字段不是数组a
的键(换句话说,如果第一个字段没有出现在第一个文件中),我们会打印该行。