67GB .csv 파일이 있습니다(알아요...알아요...)
파일이 손상되었기 때문에 파일에서 4,125,878행을 제거해야 합니다. 내 CSV 구문 분석 도구는 이를 무시하거나 건너뛰지 않습니다.
나할 수 있다sed
다음과 같은 일을하곤 했어요
sed '4125878d' in.csv > out.csv
그러나 이는 시간과 디스크 공간 측면에서 매우 비용이 많이 드는 작업입니다.
을 사용하면 sed -i '4125878d' in.csv
작업 시간이 오래 걸립니다.
내가 할 수 있는 방법이 없을까?빠르게대용량 파일의 중간에서 줄을 삭제하시겠습니까?
답변1
나는 그렇지 않다고 믿는다.
sed나 여러분이 사용하는 다른 프로그램이 임시 파일을 사용하는 대신 변경 사항을 적용할 만큼 똑똑하더라도 삭제하려는 줄이 시작된 후에 모든 데이터를 다시 써야 합니다.
줄을 삭제한다는 것은 해당 지점에서 왼쪽에 있는 파일의 전체 내용을 이전 줄의 끝으로 이동한다는 것을 의미합니다. 그럼에도 불구하고 해당 시점부터 파일을 다시 작성해야 합니다.
답변2
즉시 실행:
csv-parser -f <(cat my-huge.csv | sed '4125878d')