대용량 파일이 여러 부분으로 올바르게 분할되었는지 확인하려고 합니다. 장난감 예로 다음과 같은 파일이 있습니다 out_sample
.
123456789012
123456789012
123456789012
123456789012
123456789012
저장되면 64바이트가 됩니다. cut을 사용하여 파일을 6개의 청크로 분할하면 결과 파일은 각각 15바이트입니다.
#!/bin/sh
FILENAME="out_sample"
cut -c1-2 $FILENAME > a
cut -c3-4 $FILENAME > b
cut -c5-6 $FILENAME > c
cut -c7-8 $FILENAME > d
cut -c9-10 $FILENAME > e
cut -c11-12 $FILENAME > f
총계는 6*15=90바이트를 의미합니다. 원래 파일 크기와 새 파일 크기의 합 사이에 26바이트의 차이는 무엇입니까? cut
파일 끝에 개행 문자가 추가된 것을 확인했습니다 . 파일당 1바이트일까요? 나머지는 어떻습니까?
답변1
파일에서 2개의 열을 잘라내면 cut
각 줄에 개행 문자가 추가됩니다. 따라서 각 출력 파일은 5줄로 구성되며 각 줄에는 2개의 숫자와 개행 문자가 있습니다.
이는 25개의 추가 바이트(파일 1~5, 여섯 번째 파일은 열 13(입력 파일의 줄 바꿈)을 제거하여 삭제한 줄 바꿈만 추가함)에 대해 설명합니다.
마지막 바이트는 어디에서 오는가? 입력 파일의 마지막 줄에 개행을 강제로 적용하지 않는 편집기를 사용하고 있다고 가정합니다.
따라서 아무것도 손실되지 않습니다.
답변2
split
이 응용 프로그램의 경우 대신 사용할 수 있습니다 cut
. split -b 15 $FILENAME
파일 오프셋을 직접 계산하는 대신 자동으로 장부를 수행합니다.
편집: 질문을 잘못 읽었습니다. split
명령은 바이트 스트림의 청크처럼 열로 분할되지 않습니다. 정말로 열 단위로 원한다면 OP의 접근 방식이 가장 좋습니다.