Linux 中如何打開(kāi)一個(gè)大文本文件?
在“大數(shù)據(jù)”時(shí)代,我們會(huì)經(jīng)常遇到有大文本文件(上 GB 或更大)的情況。假設(shè)需要我們手工的搜索和編輯這些大文件,或者為了解決一些特定的問(wèn)題而需要手工分析多個(gè)上 GB 的日志文件。傳統(tǒng)的文本編輯軟件對(duì)處理這樣的大文件不太有效,當(dāng)我們?cè)噲D打開(kāi)一個(gè)大文件時(shí)會(huì)經(jīng)常由于內(nèi)存不足而郁悶的不行。
如果你是一個(gè)精明的系統(tǒng)管理員,你也許會(huì)用 cat、tail、grep、sed、awk 等這些命令的組合來(lái)打開(kāi)和編輯一個(gè)文本文件。在這篇教程里,我將會(huì)談?wù)撽P(guān)于如何在 Linux 中打開(kāi)(并編輯)一個(gè)大文本文件的更友好的方式方法。
Vim 的 LargeFile 插件
Vim文本編輯器擁有大量的插件(或腳本),它們能擴(kuò)展 VIM 的功能。其中的一個(gè)Vim插件是 LargeFile 插件。
LargeFile 插件可以使大文件更迅速的被加載和編輯,它是通過(guò)關(guān)閉 VIM 的一些像事件、回退、語(yǔ)法高亮等功能來(lái)實(shí)現(xiàn)的。
要在 VIM 上安裝 LargeFile 插件,首先要確認(rèn)是否已經(jīng)安裝 VIM。
在 Debian、 Ubuntu 或 Linux Mint 系統(tǒng)中:
$ sudo apt-get install vim
在 Fedora、CentOS 或 RHEL 系統(tǒng)中:
$ sudo yum install vim-enhanced
可以從 Vim website 上下載 LargFile 插件,***版本號(hào)是5,下載的文件將會(huì)保存為 Vimball 格式(以 .vba 結(jié)尾)。
要在你的 home 目錄下安裝插件,用 VIM 打開(kāi) .vba 文件,如下所示。
$ gunzip LargeFile.vba.gz $ vim LargeFile.vba
在 VIM 窗體上輸入 “:so %”,然后按回車鍵,就可以在你的 home 目錄下安裝這個(gè)插件了。
完成后,輸入 “:q” 退出 VIM。
這個(gè)插件將會(huì)被安裝在 ~/.vim/plugin/LargeFile.vim 下?,F(xiàn)在可以像平常一樣使用 VIM 了。
當(dāng)在 VIM 中裝載一個(gè)“大”文件的時(shí)候,這個(gè)插件起的作用就是關(guān)掉事件、回退、語(yǔ)法高亮等功能。默認(rèn)情況下大于 100MB 的文件就會(huì)被插件認(rèn)為是“大文件”。要改變也個(gè)默認(rèn)設(shè)置,你可以編輯 ~/.vimrc 文件(如果不存在就創(chuàng)建一個(gè))。
如要把大文件的標(biāo)準(zhǔn)最小定為 10MB 的話,可以在 ~/.vimrc 中添加
- let g:LargeFile=10
雖然 LargeFile 可以加速文件裝載的速度,但 VIM 自身對(duì)編輯相當(dāng)大的文件支持不太好,因?yàn)樗鼤?huì)一下子把整個(gè)文件都加載進(jìn)內(nèi)存。例如,用 VIM 裝載 1G 大小的文件,它就會(huì)占很多內(nèi)存和交換空間,如下圖所示的頂部輸出。
所以如果你的文件明顯大于你 Linux 系統(tǒng)的物理內(nèi)存的話,就要考慮其它的選擇,如下所述。
glogg 日志資源管理器
如果你只需要查看一個(gè)文本文件,并不對(duì)它做編輯,可以考慮下glogg。它是一款基于圖形用戶界面的獨(dú)立日志分析器。這個(gè) glogg 分析器支持通過(guò)正則表達(dá)式和通配符來(lái)對(duì)要打開(kāi)的文本文件進(jìn)行過(guò)濾和篩選,使用戶只看到其真正關(guān)注的內(nèi)容。
在 Debian (Wheezy 版本或更高版本)、Ubuntu 或 Linux Mint 系統(tǒng)中安裝 glogg :
$ sudo apt-get install glogg
在 Fedora (17 版本或更高版本) 系統(tǒng)中安裝 glogg :
$ sudo yum install glogg
用 glogg 打開(kāi)文本文件 :
$ glogg test.log
glogg 能很快的打開(kāi)一個(gè)大文本文件。我花了大約 12 秒就打開(kāi)了一個(gè) 1G 的日志文件。
在 "Text" 區(qū)域,你可以輸入正則表達(dá)式,然后點(diǎn)擊 "Search" 按紐,它支持表達(dá)式大小寫(xiě)敏感搜索以及自動(dòng)刷新功能。搜索后,在窗體底部會(huì)顯示出篩選的結(jié)果內(nèi)容。
從裝載文件來(lái)跟 VIM 對(duì)比, glogg 顯得更輕量級(jí),在加載完一個(gè) 1G 的日志文件后,它僅僅只使用了 83M 的物理內(nèi)存。
JOE 文體編輯器
JOE 是GPL下發(fā)布的一個(gè)輕量級(jí)的基于終端的文本編輯器。JOE 是一款少有的支持大文件的文本編輯器,可以打開(kāi)和編輯比物理內(nèi)存大的文件。
此外,JOE支持各種功能強(qiáng)大的文本編輯功能,如非破壞性編輯,用正則表達(dá)式搜索和替換,無(wú)限次的撤銷/重做,語(yǔ)法高亮等。
在 Debian、Ubuntu 或 Linux Mint 系統(tǒng)中安裝 JOE:
$ sudo apt-get install joe
在 Fedora、CentOS 或 RHEL 系統(tǒng)中安裝 JOE:
$ sudo yum install joe
要打開(kāi)編輯文本文件,請(qǐng)運(yùn)行:
$ joe test.log
相比上面提到的 glogg 來(lái)說(shuō),用 JOE 加載一個(gè)大文本文件會(huì)有點(diǎn)卡,加載一個(gè) 1G 的文件要用將近 30 秒的時(shí)間,不過(guò)考慮到要對(duì)文件進(jìn)行全文編輯,這還能忍受。一旦文件加載完成,就可以在相當(dāng)快捷的終端模式中編輯此文件。
JOE的內(nèi)存消耗令人印象深刻。加載并編輯一個(gè)1GB的文本文件,只花費(fèi)47MB的物理內(nèi)存。
如果你還知道在 Linux 中打開(kāi)/編輯大文本文件的其它方法的話,請(qǐng)跟我們分享!
via: http://xmodulo.com/2013/12/open-large-text-file-linux.html
譯者:runningwater 校對(duì):jasminepeng