下面是两个csv文件,我们需要将这两个文件与第一列
进行比较NewFile.csv
-----------
data1, A
data2.5, B
data3, C
data4.3, D
data5, E
data6, F
OldFile.csv
------------
data1, A
data2, B
data3, C
data4, D
data5, E
输出文件如下
OutputFile.csv
-------------
Updated
data2.5, B
data4.3, D
Added
data6, F
我用下面的命令来做但是它只是显示了我所有的区别,需要把它分开,就像在newfile。csv
中更新和新添加的一样awk -F',' 'FNR==NR{a[$1];next};!($1 in a)' NewFile.csv OldFile.csv
上述命令的输出文件:-
data2.5, B
data4.3, D
data6, F
但是我正在寻找一个输出,我可以清楚地声明它是添加的,并在新的一个使用shell脚本更新。
下面的脚本标识
修改- (相同的行号在两个文件中有不同的第一个字段) 添加
- (
NewFile.csv
中所有不在OldFile.csv
中的行号)
删除的行不考虑
awk -F, -v oldfile=OldFile.csv 'BEGIN {print "Updated"}
{new0=$0; new1=$1; if (!added && !getline < oldfile) {print "Added"; added=1}}
!added && new1!=$1 {print new0}
added' NewFile.csv
对于您的示例,这将打印
Updated
data2.5, B
data4.3, D
Added
data6, F
Updated
和Added
总是打印,即使没有这样的行。