vim |从700MB文件中删除前几行

时间:2010-12-27 20:09:18

标签: vim text-editor

如何在不打开主内存中的整个文件的情况下快速从大文件中删除前几行?


更新

我不想将起始x行管道传输到另一个文件然后剪切前几行,我想更新原始文件。

7 个答案:

答案 0 :(得分:6)

不完全是vim,但要剪切前10行你可以使用

tail --lines=+10 somefile.txt > newfile.txt

答案 1 :(得分:3)

tail -n+11 somefile.txt | vim -

要切断前10行并打开文件进行编辑,而不创建临时文件。请注意,当您以这种方式打开文件时,该文件在vim中没有名称。这是唯一的缺点。

*请注意,虽然我在命令中使用了11,但从第11行开始。因此它会切断前10行。

答案 2 :(得分:3)

原始问题在这里从未真正回答过。我相信这是一个解决方案:

sed -i 's/`head -n 500 foo.txt`//' foo.txt

这将消除文件的前500行,而无需创建临时文件。 (实际上,你可能不得不做头-n 499)我认为它实际上非常有用,例如,清理日志文件,而不只是删除整个日志。

答案 3 :(得分:1)

$ seq 1 502 > foo.txt
$ sed -i 1,500d foo.txt 
$ cat foo.txt 
501
502

答案 4 :(得分:0)

vim总是希望/需要读取整个文件,所以没有办法使用(仅)vim。达卡拉的建议看起来不错。

此过程将始终涉及将除文件的第一部分之外的所有部分复制到另一部分,因此我认为没有任何方法可以快速完成。

答案 5 :(得分:0)

根据您对文件的处理方式,您最好使用sedawk来编辑这样一个大文件。

答案 6 :(得分:0)

怎么样..

  1. 将原始文件拆分为两部分。 (p1:第0行 - x)(p2:行x+1 - n
  2. 修改p1,因为您要编辑第一条x行。我们称之为p1'
  3. 合并p1'p2
  4. 简而言之

    1. file - > p1p2
    2. p1 - > p1'
    3. p1' + p2 - > new_file
    4. <强>命令

      1. 使用splitcut

      2. 使用vim或您选择的编辑。

      3. 使用cat合并