Linux 中如何打開一個大文本文件

在「大數據」時代,咱們會常常遇到有大文本文件(上 GB 或更大)的狀況。假設須要咱們手工的搜索和編輯這些大文件,或者爲了解決一些特定的問題而須要手工分析多個上 GB 的日誌文件。傳統的文本編輯軟件對處理這樣的大文件不太有效,當咱們試圖打開一個大文件時會常常因爲內存不足而鬱悶的不行。php

若是你是一個精明的系統管理員,你也許會用 cat、tail、grep、sed、awk 等這些命令的組合來打開和編輯一個文本文件。在這篇教程裏,我將會談論關於如何在 Linux 中打開(並編輯)一個大文本文件的更友好的方式方法。html

Vim 的 LargeFile 插件

Vim文本編輯器擁有大量的插件(或腳本),它們能擴展 VIM 的功能。其中的一個Vim插件是 LargeFile 插件linux

LargeFile 插件可使大文件更迅速的被加載和編輯,它是經過關閉 VIM 的一些像事件、回退、語法高亮等功能來實現的。git

要在 VIM 上安裝 LargeFile 插件,首先要確認是否已經安裝 VIM。github

在 Debian、 Ubuntu 或 Linux Mint 系統中:web

$ sudo apt-get install vim

在 Fedora、CentOS 或 RHEL 系統中:正則表達式

$ sudo yum install vim-enhanced

能夠從 Vim website 上下載 LargFile 插件,最新版本號是5,下載的文件將會保存爲 Vimball 格式(以 .vba 結尾)。vim

要在你的 home 目錄下安裝插件,用 VIM 打開 .vba 文件,以下所示。編輯器

$ gunzip LargeFile.vba.gz
$ vim LargeFile.vba

在 VIM 窗體上輸入 「:so %」,而後按回車鍵,就能夠在你的 home 目錄下安裝這個插件了。大數據

完成後,輸入 「:q」 退出 VIM。

這個插件將會被安裝在 ~/.vim/plugin/LargeFile.vim 下。如今能夠像日常同樣使用 VIM 了。

當在 VIM 中裝載一個「大」文件的時候,這個插件起的做用就是關掉事件、回退、語法高亮等功能。默認狀況下大於 100MB 的文件就會被插件認爲是「大文件」。要改變也個默認設置,你能夠編輯 ~/.vimrc 文件(若是不存在就建立一個)。

如要把大文件的標準最小定爲 10MB 的話,能夠在 ~/.vimrc 中添加

let g:LargeFile=10

雖然 LargeFile 能夠加速文件裝載的速度,但 VIM 自身對編輯至關大的文件支持不太好,由於它會一會兒把整個文件都加載進內存。例如,用 VIM 裝載 1G 大小的文件,它就會佔不少內存和交換空間,以下圖所示的頂部輸出。

因此若是你的文件明顯大於你 Linux 系統的物理內存的話,就要考慮其它的選擇,以下所述。

glogg 日誌資源管理器

若是你只須要查看一個文本文件,並不對它作編輯,能夠考慮下 glogg。它是一款基於圖形用戶界面的獨立日誌分析器。這個 glogg 分析器支持經過正則表達式和通配符來對要打開的文本文件進行過濾和篩選,使用戶只看到其真正關注的內容。

在 Debian (Wheezy 版本或更高版本)、Ubuntu 或 Linux Mint 系統中安裝 glogg : 

$ sudo apt-get install glogg

在 Fedora (17 版本或更高版本) 系統中安裝 glogg :

$ sudo yum install glogg

用 glogg 打開文本文件 :

$ glogg test.log

glogg 能很快的打開一個大文本文件。我花了大約 12 秒就打開了一個 1G 的日誌文件。

在 "Text" 區域,你能夠輸入正則表達式,而後點擊 "Search" 按紐,它支持表達式大小寫敏感搜索以及自動刷新功能。搜索後,在窗體底部會顯示出篩選的結果內容。

從裝載文件來跟 VIM 對比, glogg 顯得更輕量級,在加載完一個 1G 的日誌文件後,它僅僅只使用了 83M 的物理內存。

JOE 文體編輯器

JOE 是GPL下發布的一個輕量級的基於終端的文本編輯器。JOE 是一款少有的支持大文件的文本編輯器,能夠打開和編輯比物理內存大的文件。

此外,JOE支持各類功能強大的文本編輯功能,如非破壞性編輯,用正則表達式搜索和替換,無限次的撤銷/重作,語法高亮等。

在 Debian、Ubuntu 或 Linux Mint 系統中安裝 JOE:

$ sudo apt-get install joe

在 Fedora、CentOS 或 RHEL 系統中安裝 JOE:

$ sudo yum install joe

要打開編輯文本文件,請運行:

$ joe test.log

相比上面提到的 glogg 來講,用 JOE 加載一個大文本文件會有點卡,加載一個 1G 的文件要用將近 30 秒的時間,不過考慮到要對文件進行全文編輯,這還能忍受。一旦文件加載完成,就能夠在至關快捷的終端模式中編輯此文件。

JOE的內存消耗使人印象深入。加載並編輯一個1GB的文本文件,只花費47MB的物理內存。

若是你還知道在 Linux 中打開/編輯大文本文件的其它方法的話,請跟咱們分享!

via: http://xmodulo.com/2013/12/open-large-text-file-linux.html

譯者:runningwater 校對:jasminepeng

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

本文地址:http://linux.cn/thread/12307/1/1/

相關文章
相關標籤/搜索