Answers:
更严格的解决方案:
(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
已针对此工作进行了优化。
您可以使用“ 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
为了易于使用,您可以在上面将其转换为Shell脚本。
wc
像以前的awk
解决方案一样,之前不进行计数,并且输入文件仍仅处理一次。