如何在Linux上提高文本的搜索效率

本文由 極客范 - minejo 翻譯自 Xmodulo。歡迎加入極客翻譯小組,同我們一道翻譯與分享。轉載請參見文章末尾處的要求。

ack_ampliado

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

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

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

ack的特性

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

  • 默認搜索當前工作目錄
  • 默認遞歸搜索子目錄
  • 忽略元數據目錄,比如.svn,.git,CSV等目錄
  • 忽略二進制文件(比如pdf,image,coredumps)和備份文件(比如foo~,*.swp)
  • 在搜索結果中打印行號,有助于找到目標代碼
  • 能搜索特定文件類型(比如Perl,C++,Makefile),該文件類型可以有多種文件后綴
  • 高亮搜索結果
  • 支持Perl的高級正則表達式,比grep所使用GNU正則表達式更有表現力。

相比于搜索速度,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

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

ack的使用案例

1.在當前目錄遞歸搜索單詞”eat”,不匹配類似于”feature”或”eating”的字符串:

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

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

4.只搜索包含’protected’單詞的PHP文件,然后通過文件名把搜索結果整合在一起,打印每個文件對應的搜索結果:

ack_1

5.獲取包含’CFLAG’關鍵字的Makefile的文件名。文件名為*.mk,makefile,Makefile,GNUmakefile的都在考慮范圍內:

6.顯示整個日志文件時高亮匹配到的字符串:

7.要換取ack支持的文件過濾類型,運行:

ack_2



原文鏈接: Xmodulo 翻譯: 極客范 - minejo

譯文鏈接: http://www.geekfan.net/6881/

[ 轉載請保留原文出處、譯者和譯文鏈接。]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449338.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449338.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449338.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot 10:處理Json數據中的null值

Jackson版: /*** Jackson 配置類 對Json數據進行特殊處理** Author YangXuyue* Date 2019/04/02 07:12*/ Configuration public class JacksonConfig {/*** 配置Jackson** param builder* return* Author YangXuyue* Date 2019/04/02 07:14*/BeanPrimaryConditional…

國信證券學習系列(4)

機器學習篇章,本章不過時腳本小子,機器學習最核心的是機器,是模型。 學習,無非就是找些有的沒的因子扔進去,但說實話,機器學習,太過容易過擬合,容易無效化。回測好看的一筆&#xf…

JSch - Java Secure Channel : java 代碼實現服務器遠程操作

一、前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 JSch是SSH2的純Java實現 。 JSch允許您連接到sshd服務器并使用端口轉發,X11轉發,文件傳輸等&#xff0…

前嗅ForeSpider教程:數據建表

今天,小編為大家帶來的教程是:如何在前嗅ForeSpider中,進行數據建表操作及各注意事項。主要內容包括:快速建表,自由建表,字段參數,數據表的創建,關聯與刪除,以及表單變更…

世紀大爭論:Linux還是GNU/Linux?

本文由 極客范 - 愛開源的貢獻開源社區 翻譯自 Chris Hoffman。歡迎加入極客翻譯小組,同我們一道翻譯與分享。轉載請參見文章末尾處的要求。我們在網上已經習慣用“Linux”來稱呼Linux操作系統了,然而,偶爾也用“GNU/Linux”來稱呼和指代同…

PyTorch Softmax

PyTorch provides 2 kinds of Softmax class. The one is applying softmax along a certain dimension. The other is do softmax on a spatial matrix sized in B, C, H, W. But it seems like some problems existing in Softmax2d. : ( 轉載于:https://www.cnblogs.com/hiz…

國信證券學習系列(5)

網格策略,號稱勝率100%的策略,只要扛得住回撤,怎么說呢,它包含了最簡單的思想,大道至簡,真的是沒有什么復雜的,原理清晰,思路簡單。可以明確知道我掙的是那筆錢,為什么獲…

promise

## 前言 今天來分享下promise的用法,es6偉大發明之一,當初我學習的時候也是蠻頭大的,不知道為啥,整個腦子就是,我在哪,我要干啥的懵圈,后面認真學習之后,覺得真是十分好用&#xff0…

計算機集群 解說

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 計算機集群簡稱集群是一種計算機系統,它通過一組松散集成的計算機軟件和/或硬件連接起來高度緊密地協作完成計算工作。 在某…

同時尋找最大數和最小數的最優算法 第二大數

我們知道,在一個容量為n的數據集合中尋找一個最大數,不管用什么樣的比較算法,至少要比較n-1次,就算是用競標賽排序也得比較n-1次,否則你找到的就不能保證是最大的數。那么,在一個容量為n的數據集合中同時尋…

淺談mpvue項目目錄和文件結構

2019獨角獸企業重金招聘Python工程師標準>>> 在Visual Studio Code里面打開項目文件夾,我們可以看到類似如下的文件結構: 1、package.json文件 package.json是項目的主配置文件,里面包含了mpvue項目的基本描述信息、項目所依賴的各…

[AHOI2009]最小割(最大流+tarjan)

繼續填坑了,啦啦啦 這道題本來是準備枚舉每個邊,暫時去除它,但發現時間會爆炸的 于是決定另辟蹊徑 于是這篇題解就應運而生 首先還是網絡流跑一邊 畢竟題目叫最小割嘛,給個面子 然后跑一邊tarjan對滿流的邊處理掉,即不…

進程間通信---信號

什么是信號? 】 信號處理流程 信號類型 發送信號的函數 參數sig:代表 信號 接收信號的函數 參數 handle 的處理方式有幾種? 實例代碼 實例邏輯 圖中的等待操作使用:pause()函數 代碼 在這里插入代碼片…

大白話解說,半分鐘就懂 --- 分布式與集群是什么 ? 區別是什么?

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 PS:這篇文章算是筆記,僅部分文字是原創,相當內容只是收集、整理、提煉、總結別人寫的。 沒有標為原創…

國信證券學習系列(6)

行業輪動策略: 本策略每隔1個月定時觸發計算1000能源(399381.SZ)、1000材料(399382.SZ)、1000工業(399383.SZ)、1000可選(399384.SZ)、1000消費(399385.SZ&a…

用Linux命令行修圖——縮放、編輯、轉換格式——一切皆有可能

本文由 極客范 - 八卦愛好者 翻譯自 How-To Geek。歡迎加入極客翻譯小組,同我們一道翻譯與分享。轉載請參見文章末尾處的要求。ImageMagick是一系列的用于修改、加工圖像的命令行工具。ImageMagick能夠快速地使用命令行對圖片進行操作,對大量的圖片進行…

劍指offer:二維數組中的查找

目錄 題目解題思路具體代碼題目 題目鏈接劍指offer:二維數組中的查找題目描述 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數&a…

函數對象 函數嵌套 名稱空間與作用域

函數對象: 函數是第一類對象,即函數可以當做數據傳遞 1 可以被引用 2 可以當做參數傳遞 3 返回值可以是函數 (函數名 不帶() 就是函數名的內存地址,帶括號就是執行函數) 4 可以當做容器類型的…

國信證券學習系列(7)

跨品種套利策略: 本策略根據計算滾動的.過去的30個bar的均值正負0.5個標準差得到布林線 并在最新價差上穿上軌來做空價差,下穿下軌來做多價差 并在回歸至上下軌水平內的時候平倉 獲取數據: # 獲取兩個品種的收盤價時間序列closesContextInfo.get_ma…

dubbo-admin管理平臺搭建

一、前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 dubbo的使用,其實只需要有注冊中心,消費者,提供者這三個就可以使用了,但是并不能…