国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > CentOS > 正文

CentOS系統里如何提高文本搜索效率?

2020-07-08 12:47:37
字體:
來源:轉載
供稿:網友

  對于系統管理員或程序員來說,當需要在復雜配置的目錄中或者在大型源碼樹中搜尋特定的文本或模式時,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

  $ 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

ack_1

  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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澜沧| 满城县| 福贡县| 罗平县| 开鲁县| 河池市| 禹州市| 福建省| 开化县| 榆社县| 抚宁县| 五大连池市| 兴义市| 红安县| 涿鹿县| 阿巴嘎旗| 阿拉尔市| 福州市| 九龙城区| 平罗县| 惠东县| 穆棱市| 焉耆| 宜昌市| 晋城| 岢岚县| 灌云县| 自贡市| 沙田区| 灵山县| 保山市| 江北区| 忻城县| 涡阳县| 溧水县| 青龙| 池州市| 新泰市| 江津市| 大埔区| 高陵县|