... 을 사용하고 있는데 sort -k1,1 -k2,2 srcfile> tgtfile
src 파일에 1억 8천만 줄이 포함되어 있기 때문에 "장치에 공간이 없습니다"라는 오류가 발생합니다.
이 문제를 어떻게 해결하나요?
답변1
GNU는 sort
RAM 용량보다 큰 파일을 정렬할 수 있습니다.
입력의 적절한 부분을 정렬하고, 결과를 임시 파일에 쓰고, 입력의 다음 부분으로 이동하고, 정렬하고, 임시 파일에 쓰는 등의 방식으로 이를 수행합니다. 그런 다음 부분적으로 정렬된 모든 파일을 단일 정렬된 출력으로 병합합니다.
이러한 임시 파일이 기록되는 파일 시스템은 입력 파일의 전체 내용을 담을 수 있을 만큼 충분히 커야 합니다(여러 번 저장 가능). GNU 정렬은아니요임시 파일이 기록되는 디렉토리를 매우 현명하게 선택하십시오. 이는 시스템 기본값(보통 /tmp
)을 사용합니다.
문제를 완화하려면 임시 파일을 대상 파일 옆에 배치하도록 sort에 지시하고(어쨌든 자동으로 정리됨) 다음을 사용하십시오.
sort --temporary-directory=. -k1,1 -k2,2 -o tgtfile srcfile