답변:
좀 더 단단한 솔루션 :
(head -100 > f1.txt; cat > f2.txt) < input.txt
head
출력 할 첫 100 개의 줄을 찾기 위해 100 줄 이상을 읽을 가능성이 약간 있습니다 f1.txt
. 이 여분의 바이트는 표시되지 않습니다 cat
.
awk
입력 파일을 한 번만 통과하면되므로 사용하십시오 . 다음은 첫 번째 파일에서 첫 번째 122 행을, 두 번째 파일에서 나머지를 원한다고 가정합니다.
awk 'NR < 123 { print >> "top_file"; next } {print >> "bottom_file" }' file_name
당신은 사용할 수 있습니다 csplit
(가능한 경우)을 수행합니다
csplit file N+1
파일을 두 개의 조각으로 나눕니다 (하나 N
는 줄 번호 N+1
까지) . 다른 하나는 줄 번호 에서 마지막 줄까지.
줄 번호로 나누려면 (포함하지 않음) N
:
csplit file N
csplit
작업에 최적화되어 있습니다.
모두 head
와 tail
그들이 다른 것보다 파일의 "다른"끝에서 생산 라인 옵션이 있습니다. 따라서 다음 두 가지 옵션이 있습니다.
head -n 100 source.txt > file1.txt
head -n -100 source.txt > file2.txt
또는 (NNN이의 출력보다 100이 적음 wc -l source.txt
) :
tail -n +NNN source.txt > file1.txt
tail -n NNN source.txt > file.txt
사용중인 버전 head
및 tail
자세한 내용 은 매뉴얼 페이지 를 참조하십시오.
'wc', 'dc', 'head'및 'tail'을 사용할 수 있습니다. 즉
unix> wc -l foo
545 /tmp/foo
unix> dc -e '545 100 - p'
445
unix> head -n 100 foo > filea
unix> tail -n 445 foo > fileb
사용하기 쉽도록 쉘 스크립트로 전환 할 수 있습니다.
wc
이전과의 계산은 없으며 입력 파일은awk
솔루션 과 마찬가지로 한 번만 처리됩니다 .