내 거대한 (최대 2 GiB) 텍스트 파일에는 모든 줄의 약 100 정확한 사본이 포함되어 있습니다 (제 경우에는 CSV와 같은 데이터 테이블이므로 쓸모가 없습니다).
내가 필요로하는 것은 원래 순서를 유지하면서 모든 반복을 제거하는 것이 좋습니다 (바람직하게는 성능을 크게 향상시키기 위해 희생 될 수 있음). 결과적으로 각 라인은 고유해야합니다. 100 개의 동일한 행이있는 경우 (일반적으로 복제본이 파일에 분산되고 이웃이 아님) 남은 종류 중 하나만 있어야합니다.
이것을 구현하기 위해 스칼라로 프로그램을 작성했습니다 (스칼라에 대해 모른다면 Java로 간주하십시오). 그러나 더 빠른 C 작성 네이티브 도구가 더 빠를 수 있습니까?
업데이트 : awk '!seen[$0]++' filename
파일이 2 GiB 이하인 경우 솔루션이 제대로 작동하는 것처럼 보였지만 이제는 8 GiB 파일을 정리할 때 더 이상 작동하지 않습니다. 4GiB RAM이 장착 된 Mac과 4GiB RAM이 장착 된 64 비트 Windows 7 PC 및 6GiB 스왑에서 메모리가 부족한 것으로 보입니다. 그리고 나는이 경험을 감안할 때 4GiB RAM을 가진 리눅스에서 시도하는 것에 대해 열의를 느끼지 않습니다.
sort -u
아마 빨라집니다.