AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 870369
Accepted
Dave
Dave
Asked: 2017-01-11 12:03:35 +0800 CST2017-01-11 12:03:35 +0800 CST 2017-01-11 12:03:35 +0800 CST

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

  • 772
这个问题在这里已经有了答案:
用于编辑大型(4.3 GB)纯文本文件的文本编辑器 (15 个答案)
5年前关闭。

我正在使用 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,也没有任何反应。终端挂起。如果不升级我机器上的任何硬件(但我愿意安装软件),我如何打开文件并环顾四周(我不需要编辑它,我只需要从中读取一些行)。

command-line
  • 4 4 个回答
  • 11952 Views

4 个回答

  • Voted
  1. Best Answer
    Sergiy Kolodyazhnyy
    2017-01-11T12:33:24+08:002017-01-11T12:33:24+08:00

    在处理大文件时,最好尽量减少要处理的信息量,并且有相应的工具。已经提到的一种工具是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 或其他文本编辑器打开它们

    • 8
  2. Rinzwind
    2017-01-11T12:16:50+08:002017-01-11T12:16:50+08:00

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

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

    grep {searchstring} {file}
    

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

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

    • 7
  3. Kaz Wolfe
    2017-01-11T12:18:41+08:002017-01-11T12:18:41+08:00

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

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

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

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

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

    • 5
  4. Mark Lakata
    2017-01-11T16:53:48+08:002017-01-11T16:53:48+08:00

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

    从内部键入/命令less以打开搜索字段。输入你想要的然后按回车。然后要继续搜索相同的单词,请键入n前进和N后退。要跳转到文件类型的末尾G,然后N或?。

    • 0

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve