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