如何在终端中打开一个大文件(使用 vim 导致终端挂起)?

Dav*_*ave 11 vim command-line text-editor read-only

我正在使用 Ubuntu 14.04。我有一个很大的日志文件:

-rw-r--r-- 1 rails root 1792390124 Jan 10 14:54 /var/log/unicorn/unicorn.log
Run Code Online (Sandbox Code Playgroud)

尽管如此,我需要打开它并在其中找到一些东西。我试过vim,但正在运行

vim /var/log/unicorn/unicorn.log
Run Code Online (Sandbox Code Playgroud)

只是打开一个空白屏幕,即使我使用Ctrl+ C,也没有任何反应。终端挂了。不升级机器上的任何硬件(但我愿意安装软件),如何打开文件并环顾四周(我不需要编辑它,我只需要从中读取一些行)。

Rin*_*ind 6

使用命令lessless使用更有效的方式将文件读入内存。有 2 个等效命令:moremost(您需要安装的最后一个)。那些将单个页面放入内存中。

但是您搜索的最佳选择是使用grep. 例子:

grep {searchstring} {file}
Run Code Online (Sandbox Code Playgroud)

并查看logrotate以便您跨越多个文件的日志。

并且split可以将您当前的文件分成相等的部分,这样您就可以更轻松地查看该日志。


Ser*_*nyy 6

在处理大文件时,最好将要处理的信息量降到最低,并且有一些工具可以做到这一点。提到的一种工具是grep搜索您需要的特定行。我建议使用的另外两个工具是tailhead它们可以从文件顶部 ( head) 或从文件末尾 ( tail)显示特定数量的行或字节。如果您只需要读取文件的那些特定部分,而不需要读取这两者之间的内容,这将非常有用。

另一种方法是使用split命令。它可以根据字节数或行数分解文件。例如,

$ mkdir SPLIT

$ cd SPLIT/                                                                                                       

$ split -l 5  /etc/passwd

$ ls
xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj
Run Code Online (Sandbox Code Playgroud)

现在,我的/etc/password文件被分解成更小的文件,每个文件 5 行,您可以使用 vim 或其他文本编辑器打开这些文件


Kaz*_*lfe 5

这取决于你的目标是什么。

如果您想滚动浏览整个日志文件,您可以使用lessmore命令来获得手头文件的逐页视图。

否则,如果您知道要在文件中查找的位置,则可以使用headtail命令获取文件的部分/摘录。有关如何搜索精确零件的更多信息,请参阅man headman tail

如果您正在寻找特定的字符串/条目,您可以使用grep来搜索您的字符串的文件。您可以使用cat file | grep somethinggrep something file取决于您想要做什么。

或者,如果您想做一些更高级的事情,如果需要,您可以考虑使用sedawk进行更高级的操作。