CSV 파일을 분할하는 중에 문제가 발생했습니다.

CSV 파일을 분할하는 중에 문제가 발생했습니다.

다음 명령을 사용하여 csv 파일을 여러 파일로 분할하려고합니다. 명령이 5개의 파일로 분할되지만 파일 중 하나의 데이터가 잘립니다.

이 문제를 어떻게 해결할 수 있나요?

>>split -n 5 -d -a 2  testfile

내 입력에는 5001개의 행이 있지만 다음과 같이 분할됩니다.

file1 - 932
file2 - 910
file3 - 1149
file4 - 1044
file5 - 966

각 파일은 1000줄이어야 하지 않나요?

답변1

split -n 5마지막 부분을 제외한 모든 부분이 동일한 양을 갖도록 파일을 5개 부분으로 분할합니다.바이트.

행 경계에서만 분할하려면 다음을 사용하십시오.

split -n l/5 -d -a 2  testfile

이것은GNU 문서split다음과 같이:

'-n Chunks'
'--number=chunks'
     입력을 청크 출력 파일로 분할합니다. 여기서 청크는 다음과 같습니다.

          n      generate n files based on current size of input
          k/n    only output kth of n to stdout
          l/n    generate n files without splitting lines
          l/k/n  likewise but only output kth of n to stdout
          r/n    like ‘l’ but use round robin distribution
          r/k/n  likewise but only output kth of n to stdout

또 다른 옵션은 각 출력 파일에 원하는 줄 수를 지정하는 것입니다.

split -l 1000 -d -a 2  testfile

위의 내용은 파일을 여러 섹션으로 나누며, 각 섹션(마지막 섹션 제외)에는 1,000줄이 있습니다. 이는 다음과 같이 문서화되어 있습니다.

'-llines'
'--lines=lines'
     각 출력 파일에 줄을 넣습니다.

답변2

사용된 -l옵션 split. 매뉴얼 페이지에서:

 -l line_count
         Create smaller files n lines in length.

예를 들어

split -l 1000 afile.txt

관련 정보