답변:
가장 쉬운 방법은 아마도 headand 를 사용하는 것입니다 tail.
$ head -n 1000 input-file > output1
$ tail -n +1001 input-file > output2
처음 1000 줄을 input-file안으로 넣고 output11001에서 끝까지 모든 줄을 넣 습니다.output2
나는 그것이 split당신에게 가장 좋은 접근법 이라고 생각합니다 .
-l xxxx옵션을 사용하십시오 . 여기서 xxxx는 각 파일에서 원하는 행 수입니다 (기본값은 1000).
-n yy생성 된 파일의 양에 더 관심이있는 경우이 옵션을 사용할 수 있습니다 . 사용 -n 2에는 각 파일의 행의 양을 문제 만 2 부분으로 파일을 분할하지 않습니다.
를 사용하여 파일의 줄 수를 계산할 수 있습니다 wc -l filename. 행 옵션이있는 'wordcount'명령입니다.
man splitman wcsplit -l 1000 bigfile && mv xaa piece1 && cat x?? > piece2 && rm x??.
이것은 직업입니다 csplit:
csplit -s infile 1001
첫 번째 조각 s-1001 행까지 포함하지 않고 두 번째 조각 -나머지 행 을 ilently 분할 합니다. 접두사
사용 및 지정과 같이 다른 출력 파일 이름이 필요한 경우 옵션을 사용할 수 있습니다 .infilexx00xx01-f
csplit -sf piece. infile 1001
두 개의 파일을 생성 piece.00하고piece.01
똑똑 head하면 다음과 같은 일을 할 수도 있습니다.
{ head -n 1000 > 1st.out; cat > 2nd.out; } < infile
csplit. 아주 좋아요 (나는 단지 POSIX 명령 목록을 읽고 있는데 csplit처음 에는 명령의 목적으로 머리를 감싸는 데 큰 어려움을 겪었습니다 . 실제로는 매우 간단합니다.) :)
하나의 명령으로 질문이 요구하는 것을 수행하는 간단한 방법 :
awk '{ if (NR <= 1000) print > "piece1"; else print > "piece2"; }' bigfile
또는 길고 직관적으로 이해하기 쉬운 명령을 입력하는 것을 정말로 싫어하는 사람들에게는
awk '{ print > ((NR <= 1000) ? "piece1" : "piece2"); }' bigfile
split --help?