다음 명령을 사용하여 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