분할 방법, 각 분할 및 gzip 파일에 텍스트 추가

분할 방법, 각 분할 및 gzip 파일에 텍스트 추가

나는 대용량 파일을 원하며 다음을 수행합니다 data.txt.

  1. 256m로 나누어져 있음
  2. data.txt각 분할 파일에 처음 3줄을 추가합니다.
  3. 압축하다

data.txt좋다:

aaa
bbb
ccc
<data>
<data>
<data>
...
<few million rows>
<data>

최종 결과는 각 분할 파일이 동일한 처음 3줄을 갖게 된다는 것입니다.

aaa
bbb
ccc

내가 아는 가장 효율적인 방법은 메모리에 있는 것입니다. 2단계를 종료하면 다음과 같습니다.

split --bytes=256M -d -a 3 --filter='gzip > $FILE.gz' data.txt split/data_

하지만 2단계에서는 파일을 디스크에 쓰기 위해 gzip을 별도의 명령으로 분할하지 않고 이 작업을 수행하는 방법을 잘 모르겠습니다.

답변1

필터를 더 복잡하게 만들 수 있습니다.

split -C 256M -d -a 3 --filter '(head -n 3 data.txt; cat) | gzip > $FILE.gz' <(tail -n +4 data.txt) data_

이렇게 하면 처음 세 행을 건너뛰고 data.txt각 분할에 다시 도입합니다.

-C대신 --bytes분할 파일에 전체 레코드가 포함되어 있는지 확인하는 데 사용합니다 .

관련 정보