1982 views
 owned this note
--- disqus: ncumcl --- Linux Command - 進階篇 === ###### tags: `MCL Notebook` [toc] # grep [教學](https://www.cyberciti.biz/faq/grep-regular-expressions/) # ag The silver searcher (即ag),速度比ack和grep快,閃電般的搜索程式碼工具,使用非常簡單。 ## 安裝 * MacOS: ```brew install the_silver_searcher``` * Debian/Ubuntu: ```sudo apt-get install silversearcher-ag``` * CentOS: ```sudo yum install the_silver_searcher``` * Fedora: ```sudo dnf install the_silver_searcher``` * ArchLinux: ```sudo pacman -S the_silver_searcher``` ## 常見用法 ### 在目錄中的檔案,搜尋特定文字 ```shell= # 直接在想進行搜索的目錄下打 $ ag "string-to-search" ``` 此時ag會搜尋當前目錄下的所有文件,在每個文件的每一行中找"要搜尋的字串",把文件名、行號和匹配的內容高亮顯示出來。 如果想在某個指定的目錄下搜索,或只搜索某個文件的內容,在搜索的字符串後面加上路徑就行: ```shell= $ ag "string-to-search" /path/to/directory ``` ### 只在特定類型檔案中,搜尋特定文字 ag -G則提供強大的過濾功能,使搜索在特定的文件中進行。下面的例子只搜索java類型的文件: ```shell= $ ag -G ".+\.java" "string-to-search" /path/to/directory ``` ### 搜尋特定類型檔案 ```shell= $ ag -g .dts$ #搜尋附檔名為dts的檔案 ``` ## ag 選項說明 ag會根據輸入自動判定大小寫的匹配方式。如果查詢的字符串只含有小寫字符,使用大小寫不敏感的匹配方式;如果出現了大寫字符,就改為大小寫敏感的匹配方式。 直接使用不敏感的匹配方式,請用```ag -i```選項。 另一個很有用的選項是```ag -w```的全詞匹配,它要求匹配的字符串前後都需要有合適的分隔符。 ``` ag -a ```搜索全部文件(doesn't include hidden files or patterns from ignore files) ,在搜索不到文件時,可以嘗試添加-a標誌。 最後,如果只關心有哪些文件匹配(而不在意文件的內容), ```ag -l```顯示有匹配的文件名 ```ag -L```顯示沒有任何匹配的文件名。