CentOS系統裡如何提高文本搜尋效率?

來源:互聯網
上載者:User

CentOS系統裡如何提高文本搜尋效率?

 

  對於系統管理員或程式員來說,當需要在複雜配置的目錄中或者在大型源碼樹中搜尋特定的文本或模式時,grep類型的工具大概是最受歡迎的。

  如果grep是你最喜歡的工具之一,那麼你可能會更喜歡ack。ack是一個基於Perl的類似於grep的命令列工具,但是搜尋速度更快,能力比grep更強。尤其是當你是程式員時,我強烈推薦你使用ack來取代grep。

  ack的用法非常適用與程式碼搜尋,因此程式員可以在源碼樹中進行複雜的查詢,而只需要更少的按鍵。

  ack的特性

  ack的一些非常強大的特性:

  預設搜尋當前工作目錄

  預設遞迴搜尋子目錄

  忽略中繼資料目錄,比如.svn,.git,CSV等目錄

  忽略二進位檔案(比如pdf,image,coredumps)和備份檔案(比如foo~,*.swp)

  在搜尋結果中列印行號,有助於找到目標代碼

  能搜尋特定檔案類型(比如Perl,C++,Makefile),該檔案類型可以有多種檔案尾碼

  高亮搜尋結果

  支援Perl的進階Regex,比grep所使用GNURegex更有表現力。

  相比於搜尋速度,ack總體上比grep更快。ack的速度只要表現在它的內建的檔案類型過濾器。在搜尋過程中,ack維持著認可的檔案類型的列表,同時跳過未知或不必要的檔案類型。它同樣避免檢查多餘的中繼資料目錄。

  在Linux上安裝ack

  儘管在大多數Linux發行版中是ack是標準包,可輕易獲得(比如在基於debian的系統中,是ack-grep包,而在基於Redhat的系統中則是ack包),但是與發行版捆綁的ack版本仍然是1.x,而ack2.0已經發布,而且擁有更多特性。

  因此我準備在官方網站下載,然後安裝ack。

  方便的是,ack在官網可可作為一個單獨的Perl指令碼獲得,其中整合了所有需要依賴的模組。因此,你不需要額外安裝Perl模組來運行這指令碼。

  為了在你的Linux系統中安裝ack,去官網下載最新版本的ack。在寫本文時,最新的版本是2.12

  $ wget http://beyondgrep.com/ack-2.12-single-file $ sudo mv ack-2.12-single-file /usr/local/bin/ack $ sudo chmod 0755 /usr/local/bin/ack

  需要注意的是,在基於Debian的系統中,有一個獨立的包也叫ack(漢碼轉換器)。所以如果你碰巧有使用那個包,那麼你就必須重新命名ack來避免命名衝突了。

  ack的使用案例

  1.在目前的目錄遞迴搜尋單詞”eat”,不匹配類似於”feature”或”eating”的字串:

  $ ack -w eat

  2.搜尋有特殊字元的字串’$path=.’,所有的元字元(比如’$',’.')需要在字面上被匹配:

  $ ack -Q '$path=.' /etc

  3.除了dowloads目錄,在所有目錄搜尋”about”單詞:

  $ ack about --ignore-dir=downloads

  4.只搜尋包含’protected’單詞的PHP檔案,然後通過檔案名稱把搜尋結果整合在一起,列印每個檔案對應的搜尋結果:

  $ ack --php --group protected

  5.擷取包含’CFLAG’關鍵字的Makefile的檔案名稱。檔案名稱為*.mk,makefile,Makefile,GNUmakefile的都在考慮範圍內:

  $ ack --make -l CFLAG

  6.顯示整個記錄檔時高亮匹配到的字串:

  $ tail -f /var/log/syslog | ack --passthru 192.168.1.10

  7.要換取ack支援的檔案過濾類型,運行:

  $ ack --help-type

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.