我有一个 ~20GB 的 csv 文件。示例文件:
1,a@a.com,M
2,b@b.com,M
1,c@c.com,F
3,d@d.com,F
此文件中的主键是第一列。我需要写两个文件,uniq.csv 和 duplicates.csv
uniq.csv 应包含所有非重复记录,并且 duplicates.csv 将包含所有具有当前时间戳的重复记录。
uniq.csv
1,a@a.com,M
2,b@b.com,M
3,d@d.com,F
重复.csv
2012-06-29 01:53:31 PM, 1,c@c.com,F
我正在使用 Unix Sort,以便我可以利用它的 External R-Way 合并排序算法
To identify uniq records
tail -n+2 data.txt | sort -t, -k1 -un > uniq.csv
To identify duplicate records
awk 'x[$1]++' FS="," data.txt | awk '{print d,$1}' "d=$(date +'%F %r')," > duplicates.csv
我想知道是否可以通过单次扫描这个大文件来找到重复项和 uniq ?