从2个不同的csv文件中比较2列

时间:2016-11-21 10:32:12

标签: shell csv awk

我的目的是比较2个不同csv文件的特定列和&从第二个文件中获取第一个文件中没有的数据。例如。

第一个文件

"siddhartha",1
"mukherjee",2

第二个文件

"siddhartha",1
"mukherjee",2
"unique",3

预期输出

"unique",3

当第一列的文本大小有限时,以下命令正常工作,因此在上面的示例中它正常工作。

awk -F',' 'FNR==NR{a[$1];next};!($1 in a);' file1.csv file2.csv > file3.csv

但是第1列的文本大小非常大(例如10000个字符),它不起作用。它在某一点切割文本。

对此有何解决方案?

2 个答案:

答案 0 :(得分:1)

可能是以下awk

 awk 'BEGIN{FS=","};FNR==NR{a[$1];next};!($1 in a)' file1 file2
 "unique",3

awk -F',' 'FNR==NR{a[$1];next};!($1 in a)' file1 file2
"unique",3

将字段分隔符设置为逗号,并将每个$1值读入一个键

答案 1 :(得分:0)

您是否尝试过comm命令?

类似这样的事:comm -23 file2.csv file1.csv

请在man comm上阅读;并且两个文件都应该在之前进行排序。

您可以使用sort来执行此操作