按字段比较两个大型csv文件并保存输出

时间:2013-11-28 07:03:18

标签: unix awk

我正在尝试比较两个非常大的csv文件,并通过两者中的自由文本字段进行比较。我尝试过使用awk,例如

awk -F, 'FNR==NR{a[$2]++;next} a[$2]' table1.csv table2.csv > duplicates.csv

但输出csv文件格式不正确,可能是因为自由文本字段包含逗号。我想将重复表中的整个重复行保存在table1中。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我是否理解你需要的东西:

$ more filea fileb
::::::::::::::
filea
::::::::::::::
1,a
2,b
3,c
::::::::::::::
fileb
::::::::::::::
1,d
x,e
3,f
$ awk 'BEGIN {
    while (getline a < "filea" && getline b < "fileb") {
        split(a, aa, ",")
        split(b, bb, ",")
        if (aa[1] == bb[1]) {
            print a, b
        }
    }
}'
1,a 1,d
3,c 3,f