Answers:
我认为这split
是您最好的方法。
尝试使用该-l xxxx
选项,其中xxxx是每个文件中所需的行数(默认为1000)。
-n yy
如果您更担心创建的文件数量,则可以使用该选项。采用-n 2
无论每个文件中的行数如何,都会将文件分为两部分。
您可以使用以下方法计算文件中的行数: wc -l filename
。这是带有lines选项的'wordcount'命令。
man split
man wc
split -l 1000 bigfile && mv xaa piece1 && cat x?? > piece2 && rm x??
。
这是一项工作csplit
:
csplit -s infile 1001
将s
激烈地分裂infile
,第一部分xx00
-直到但不包括第1001行,第二部分xx01
-其余的行。
如果您需要不同的输出文件名,则可以使用这些选项,例如使用-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
吗?