相信大家都有用過grep來找文字,不過這個ack是專為程式設計師開發的。
從官網下載並安裝
1 | $ curl http://beyondgrep.com/ack-2.12-single-file > ack |
ack有以下這些特性
- 預設就搜尋當前目錄
- 預設搜尋所有子目錄
- 忽略Metadata資料節,如
.svn和.git等 - 忽略Binary檔
- 印出找到Pattern的行號
- 能夠搜尋特定文件類型的檔案 (如Perl/C++)
- Highlight搜尋結果
- 支持Perl的Advance Regular Expression
幾個常用的功能
如何只搜尋eat而忽略掉feature和`eating
1 | $ ack -w eat |
當Pattern中有特殊字元的時候,需要當作Literal chracter被匹配
1 | $ ack -Q '$path/$' |
放棄搜尋某些目錄
1 | $ ack about --ignore-dir=downloads |
列出某些特定文件類型的檔案,列出擁有Pattern的檔案名稱
以Makefile為例,可能的檔名有 *.mk, makefile, Makefile
我們想知道這些檔案裡面哪些定義了CFLAGS,就能夠這樣作
1 | $ ack --make -l CFLAG |
Highlight某些特定Pattern
1 | $ tail -f /var/log/syslog | ack --passthru 192.168.1.10 |
這裡的passthru是不管有沒有匹配到都會輸出。
Update
在網路上釉看到ag這套軟體。用途大同小異。多了一些ack沒有的功能。
可以參考Conquering the Command Line Chapter 2. Ack/Ag