我有一个大文件,需要分成两个文件。假设在第一个文件中应选择 1000 行并将其放入另一个文件中,并删除第一个文件中的这些行。
我尝试使用split
,但它正在创建多个块。
答案1
最简单的方法可能是使用head
and tail
:
$ head -n 1000 input-file > output1
$ tail -n +1001 input-file > output2
这会将前 1000 行放入input-file
into output1
,并将从 1001 到结尾的所有行放入output2
答案2
我认为这split
是你最好的方法。
尝试使用该-l xxxx
选项,其中 xxxx 是每个文件中所需的行数(默认为 1000)。
-n yy
如果您更关心创建的文件数量,可以使用该选项。-n 2
无论每个文件中有多少行,使用都会将您的文件仅分成两部分。
您可以使用 来计算文件中的行数wc -l filename
。这是带有lines 选项的“wordcount”命令。
参考
man split
man wc
答案3
这是一份工作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
答案4
一种用一个命令来完成问题所要求的简单方法:
awk '{ if (NR <= 1000) print > "piece1"; else print > "piece2"; }' bigfile
或者,对于那些真正讨厌输入长的、直观易懂的命令的人来说,
awk '{ print > ((NR <= 1000) ? "piece1" : "piece2"); }' bigfile