Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vim |从700MB文件中删除前几行_Vim_Text Editor - Fatal编程技术网

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

vim |从700MB文件中删除前几行,vim,text-editor,Vim,Text Editor,如何在不打开主内存中的整个文件的情况下,快速地从一个大文件中删除前几行 更新 我不想将开始的x行插入另一个文件,然后剪切前几行,我想更新原始文件。不完全是vim,而是剪切前10行中的一行 tail --lines=+10 somefile.txt > newfile.txt vim总是希望/需要读取整个文件,因此无法使用(仅)vim。达卡拉的建议看起来不错 这个过程总是需要将文件的第一部分复制到另一部分,所以我看不到任何快速复制的方法 tail -n+11 somefile.txt |

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


更新
我不想将开始的
x
行插入另一个文件,然后剪切前几行,我想更新原始文件。

不完全是vim,而是剪切前10行中的一行

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

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

这个过程总是需要将文件的第一部分复制到另一部分,所以我看不到任何快速复制的方法

tail -n+11 somefile.txt | vim -
切掉前10*行并打开文件进行编辑,而不创建临时文件。请注意,以这种方式打开该文件时,该文件在vim中没有名称。这是唯一的缺点


*请注意,尽管我在命令中使用了11,但这是从第11行开始的。因此,它将切掉前10行。

根据您对文件的处理方式,您最好使用
sed
awk
来编辑如此大的文件。

如何

  • 将原始文件拆分为两部分。(
    p1
    :行0-
    x
    )(
    p2
    :行
    x+1
    -
    n
  • 编辑
    p1
    ,因为您要编辑第一行
    x
    。我们称之为
    p1'
  • 组合
    p1'
    p2
  • 总之

  • file
    ->
    p1
    p2
  • p1
    ->
    p1'
  • p1'
    +
    p2
    ->
    新建文件
  • 命令

  • 使用
    split
    cut

  • 使用
    vim
    或您选择的编辑器

  • 使用
    cat
    进行联合收割机


  • 原来的问题在这里从未得到真正的回答。我相信这是一个解决办法:

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

    这将消除文件的前500行,而无需创建临时文件。(实际上,您可能需要执行head-n 499)我认为它实际上非常有用,可以作为一行程序来清理日志文件,而不只是删除整个日志。

    该命令不会将前x行传输到新文件,而是将从第10行开始的所有行传输到新文件。在此之后,只需重命名文件以覆盖原始文件。如果Darcara的答案不是您要查找的答案,那么为什么您会将其标记为“正确”并有效地“关闭”此问题?非常不需要进行匹配/替换。我甚至认为如果你在那500行中有斜线,它就会断开。看看我的答案。
    $ seq 1 502 > foo.txt
    $ sed -i 1,500d foo.txt 
    $ cat foo.txt 
    501
    502