如何在终端中打开一个大文件(使用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
来搜索您需要的特定行。 我建议使用的另外两个工具是tail
和head
,可以从文件顶部( 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或其他文本编辑器打开
使用命令less
。 less
使用更有效的方式将文件读入内存。 有2个等效命令: more
和most
(最后一个需要安装)。 那些把单页放入内存。
但您搜索的最佳选择是使用grep
。 例:
grep {searchstring} {file}
并查看logrotate
以便跨越多个文件的日志。
split
可以将当前文件分成相等的部分,这样您就可以更轻松地查看该日志。
这取决于你的目标是什么。
如果要滚动整个日志文件,可以使用less
或more
命令来获取手头文件的逐页视图。
否则,如果您知道要查找的文件中的哪个位置,则可以使用head
或tail
命令获取文件的部分/摘录。 有关如何搜索确切零件的更多信息,请参阅man head
和man tail
。
如果您要查找特定的字符串/条目,可以使用grep
在文件中搜索字符串。 你可以使用cat file | grep something
cat file | grep something
或grep something file
取决于你想做什么。
或者,如果你想做一些更高级的事情,你可以考虑使用sed
或awk
进行更高级的操作,如果需要的话。
如果你确切知道你想要的是哪一行,请使用grep
。 但是如果你正在寻找你不确定的东西,那么使用less
会更好,因为它会显示你的上下文(这对日志文件特别有用)。
在less
键入/
命令以打开搜索字段。 键入您想要的内容,然后按Enter键。 然后继续搜索相同的单词,键入n
前进, N
键后退。 要跳到文件类型G
的末尾,那么N
还是?
。