【发布时间】:2017-11-21 02:03:57
【问题描述】:
我想使用 linux 命令行将一个文件拆分为多个文件它们会有不同的行。我怎样才能做到?
例如假设一个文件有 1000 行,如何将 前 600 行 拆分为 file1,剩余 400 行 拆分为 file2 >?我知道 split 可以按相同的行拆分一个大文件,但我不知道我是否还能在这里使用它。
如果有人可以帮助我,我将不胜感激。谢谢!!
【问题讨论】:
我想使用 linux 命令行将一个文件拆分为多个文件它们会有不同的行。我怎样才能做到?
例如假设一个文件有 1000 行,如何将 前 600 行 拆分为 file1,剩余 400 行 拆分为 file2 >?我知道 split 可以按相同的行拆分一个大文件,但我不知道我是否还能在这里使用它。
如果有人可以帮助我,我将不胜感激。谢谢!!
【问题讨论】:
对于你的例子,如果你使用
split FILE --lines=600
最后 400 行将出现在最后一个片段中。
如果您想进行任意拆分,我建议将head 和tail 结合使用。
# e.g. get the 300 lines following line 250
tail -n +250 FILE | head -n 300
【讨论】:
head | tail 是相当低效的。一个简单的sed 脚本只需要通过一次。 sed -e '1,12wonefile' -e '13,17wanother' -e '18,$wetc' 将前 12 行写入一个文件,接下来的 5 行写入另一个文件,其余的写入第三个文件。 (平台之间的一些方言变化 - 请参阅本地手册页,了解您的盒子上的语法究竟是什么样的。)