本篇介紹 Linux 下超強的搜尋字串工具「The Silver Srarcher」,The Silver Srarcher 簡稱 ag, ag 號稱比 ack 快(ack 又號稱比 grep 快),這麼厲害的 ag 搜尋工具還不趕緊手刃在 Linux 裝起來試試。
以下的 Linux ag 用法與範例將分為這幾部分,
- ag 安裝方法
- ag 基本用法
- ag 指定目錄下搜尋
- ag 排除目錄
- ag 搜尋內容符合的檔案 pipe 給 sed 取代文字
- ag 常用選項
- ag 搭配正規表達式
那我們開始吧!
ag 安裝方法
Ubuntu 下安裝方法為1
sudo apt-get install silversearcher-ag
macOS 下 Homebrew 安裝方法為1
brew install the_silver_searcher
ag 基本用法
基本上 ag 跟 grep 大部分用法一樣,甚至一些常用的選項都變成 ag 的預設選項,這樣使用者也不太需要記一堆選項,使用上自然方便很多,假設要搜尋 main 這個關鍵字,那麼 ag 的使令可以這樣用,1
ag "main\"
假設要搜尋 main (
這個關鍵字,(
搜尋特殊字元要加 \
,1
ag "main\("
ag 指定目錄下搜尋
指定 src 目錄下搜尋1
ag "main\(" src
指定 src, aaa, bbb 多個目錄下搜尋
ag 排除目錄
排除 3rdparty 目錄之外1
ag "main\(" --ignore-dir 3rdparty
排除 3rdparty, doc 多個目錄之外1
ag "main\(" --ignore-dir 3rdparty --ignore-dir doc
ag 搜尋內容符合的檔案 pipe 給 sed 取代文字
ag 搜尋內容符合的檔案 pipe 給 sed 取代文字的方式如下,範例內容是假設我要搜尋檔案內容有 http 的字串找出來後將這些檔案名稱 pipe 給 sed 取代文字,將這些檔案裡的 http 全部取代成 https,1
2
3
4# Linux
ag "http" -l | xargs sed -i 's/http/https/g'
# macOS
ag "http" -l | xargs sed -i "" 's/http/https/g'
如果 ag 換成 grep 的話,可以參考下面這個寫法或這篇。1
2
3
4# Linux
grep -ri "http" * -l | xargs sed -i 's/http/https/g'
# macOS
grep -ri "http" * -l | xargs sed -i "" 's/http/https/g'
ag 常用選項
ag 另外其他很有用的選項是ag -i
使用大小寫不敏感的匹配方式ag -w
全詞匹配ag -G ".+\.java"
搜索 java 類型的檔案ag -l
顯示有匹配的檔案路徑ag -L
顯示沒有任何匹配的檔案路徑ag -v
反向匹配,將匹配到的資料排除
ag 搭配正規表達式
ag 顯示 abc 開頭,1
ag ^abc log.txt
ag 顯示 abc 結尾,1
ag abc$ log.txt
ag 顯示數字,例如 abc0 ~ abc9 開頭,1
ag abc[0-9] log.txt
其它相關文章推薦
Linux 常用指令教學懶人包
Linux grep 搜尋字串用法與範例
Linux grep/ack/ag 搜尋字串用法與範例
Linux cut 字串處理用法與範例
Linux sed 字串取代用法與範例
Linux find 尋找檔案/尋找資料夾用法與範例