У меня есть CSV-файл ~ 20 ГБ. Образец файла:
1,[email protected],M
2,[email protected],M
1,[email protected],F
3,[email protected],F
Первичным ключом в этом файле является первый столбец. Мне нужно написать два файла, uniq.csv и дубликаты.csv
uniq.csv должен содержать все неповторяющиеся записи, а duplicas.csv будет содержать все повторяющиеся записи с текущей отметкой времени.
uniq.csv
1,[email protected],M
2,[email protected],M
3,[email protected],F
дубликаты.csv
2012-06-29 01:53:31 PM, 1,[email protected],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 за одно сканирование этого большого файла?