【发布时间】:2012-06-19 21:07:05
【问题描述】:
我有一个 ~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
duplicates.csv
2012-06-29 01:53:31 PM, 1,c@c.com,F
我正在使用 Unix 排序,以便我可以利用其外部 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?
【问题讨论】: