250,000 * 3600(행 3600개, 열 250,000개) 형식의 txt 파일이 있는데 각각 250,000 * 1 크기의 작은 txt 파일 3600개로 분할하겠습니다.
분할은 기본적으로 큰 파일을 특정 크기의 작은 파일로 분할한다는 것을 이해합니다. 동일한 기술을 따르면 동일한 크기의 파일을 얻을 수 있지만 각 파일은 249,999 * 1 또는 250,001 * 1이 될 수 있습니다.
누가 나를 도와줄 수 있나요?
답변1
나는 작은 스크립트를 작성하는 것을 제안합니다:
NR_LINES=$(wc -l your-file | awk '{ print $1 }')
for line in {1..$NR_LINES}; do
head -n $line your-file | tail -n 1 > your-file.part$line
done
그러면 파일의 줄 번호가 변수에 저장됩니다 NR_LINES
. 어쩌면 파일에 관심 있는 것보다 더 많은 줄이 포함되어 있을 수도 있습니다. 이 경우 변수를 직접 설정해야 합니다. 스크립트는 파일의 1부터 마지막 줄까지 반복됩니다. 각 실행마다 첫 번째를 인쇄합니다.N좋아요( $line
). 이는 파이프로 연결되어 tail
마지막 줄만 인쇄하고 결과를 파일에 저장합니다.
답변2
csplit
줄의 시작 부분과 일치하는 패턴을 사용하여 /^/
각 줄을 분할 할 수 있습니다 . 매개변수는 {*}
입력이 끝날 때까지 이 패턴을 반복합니다.
csplit --elide-empty-files input.txt '/^/' '{*}'
--elide-empty-files
(또는 ) 이 없으면 -z
인덱스 0의 파일은 비어 있습니다.