我的目的是比较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个字符),它不起作用。它在某一点切割文本。
对此有何解决方案?
答案 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
来执行此操作