〜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 の 2 つのファイルを作成する必要があります。
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
外部R-Wayマージソートアルゴリズムを利用できるように、Unix Sortを使用しています
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
この大きなファイルを 1 回スキャンするだけで、重複と一意の両方を見つける方法があるのではないかと考えていました。