将一个文件分成两个

将一个文件分成两个

我有一个大文件,需要分成两个文件。假设在第一个文件中应选择 1000 行并将其放入另一个文件中,并删除第一个文件中的这些行。

我尝试使用split,但它正在创建多个块。

答案1

最简单的方法可能是使用headand tail

$ head -n 1000 input-file > output1
$ tail -n +1001 input-file > output2

这会将前 1000 行放入input-fileinto 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

相关内容