![在vi中打开大存储日志文件](https://linux22.com/image/103611/%E5%9C%A8vi%E4%B8%AD%E6%89%93%E5%BC%80%E5%A4%A7%E5%AD%98%E5%82%A8%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6.png)
我在 AIX 分区中有一个存储日志。当我尝试使用 vi 命令编辑文件时,我收到以下消息:ex: 0602-101 Out of memory saving lines for undo delete lines
我不想扩展文件限制来读取文件。相反,我想删除一些行以减小文件大小。
如何指定删除文件中除最后 10000 行之外的所有内容?
我认为这是正确的方法,但效果不佳:1,$-10000d
答案1
代替删除使用 Vi 过滤除最后 10000 行之外的所有内容,将它们过滤到一个新文件中(您通常不希望编辑无论如何,日志文件)。
$ tail -n 10000 logfile >logfile.tail
如果您愿意,您可以替换logfile
为:logfile.tail
$ mv logfile.tail logfile
由于某些写入日志文件的程序可能会保持日志文件打开以进行写入,直到程序退出,因此即使旧日志文件已被较短版本替换,一些新消息也可能会写入旧日志文件中。这些日志消息将丢失。
要解决此问题:
$ cat logfile.tail >logfile
这会截短 logfile
(清空它而不删除它)然后用 的内容替换它的内容logfile.tail
。这也意味着来自已logfile
打开写入的程序的消息不会丢失。
还可以考虑放置某种自动日志文件轮换以避免日志文件过大。