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

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

-rw-r--r-- 1 rails root 1792390124 Jan 10 14:54 /var/log/unicorn/unicorn.log 

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

 vim /var/log/unicorn/unicorn.log 

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

处理大型文件时,最好尽量减少您要处理的信息量,并且有适合的工具。 已经提到的一个工具是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 

现在,我的/etc/password被分解为更小的文件,每行5行,你可以用vim或其他文本编辑器打开

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

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

 grep {searchstring} {file} 

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

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

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

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

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

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

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

如果你确切知道你想要的是哪一行,请使用grep 。 但是如果你正在寻找你不确定的东西,那么使用less会更好,因为它会显示你的上下文(这对日志文件特别有用)。

less键入/命令以打开搜索字段。 键入您想要的内容,然后按Enter键。 然后继续搜索相同的单词,键入n前进, N键后退。 要跳到文件类型G的末尾,那么N还是?