ripgrep 是開源社區正在進行的 RIIR(re-write in Rust)工作的一個優秀成果。它旨在成為經典grep 命令
它的語法如下:
rg [files/directories]
使用 ripgrep,可以不提供待搜索的文件名。 如果沒有提供文件名,那么就會搜索所有的文件 。如果你不知道搜索的關鍵詞在哪個文件中,那這種情況下是非常有用的。
當然,我們也可以使用 grep 搜索所有的文件,但是 ripgrep 不需要提供額外的參數。
什么是 ripgrep
ripgrep 是一個遞歸正則表達式模式匹配工具,它考慮了 gitignore。如果你的 gitignore 中有排除的文件或目錄,那么 ripgrep 將會忽略它們,從而加快搜索的執行時間。
ripgrep 幾個比較突出的特點如下:
- 在目錄中遞歸搜索;
- 輸出中不同顏色高亮顯示;
- 支持多種編碼格式,比如 UTF-8,SHIFT_JIS等;
- 可以在壓縮文件的zip文件中搜索;
- 默認情況下會忽略隱藏文件,另外也會忽略 gitignore文件中的過濾設置。
你可以將其視同為 grep,但 ripgrep 搜索的是文件和文件內容,而不是 grep 所處理的原始字節流。
安裝 ripgrep
大多數 Linux 系統中都預裝了 grep,但是 ripgrep 并沒有這樣的特權,所有我們需要手動安裝它。
ripgrep 在所有主流 Linux 發行版的存儲庫中都可用,所以我們可以使用包管理器來安裝。
如果你是 Arch Linux 用戶,可以使用如下命令安裝:
pacman -S ripgrep
Gentoo 用戶使用如下命令安裝 ripgrep:
emerge sys-apps/ripgrep
Fedoras 或者 Red Hat 使用如下命令:
sudo dnf install ripgrep
openSUSE(15.1及更新版本)用戶使用如下命令:
sudo zypper install ripgrep
Debian Buster(v10)或更高版本的用戶,可使用 apt;Ubuntu Cosmic Cutlefish(18.10)或更高級版本也可以使用發行版的官方存儲庫:
sudo apt install ripgrep
使用 ripgrep 命令
如果你熟悉 grep 命令,就會發現 ripgrep 與其工作原理類似。它 接受一個字符串和文件名作為參數 ,運行時會搜索文件,并顯示輸入字符串與文件內容匹配的位置。
基本搜索
如下例子,我們在 Cargo.html 中搜索單詞 description:
$ rg description Cargo.toml
3:description = "A more intuitive version of du"
53:extended-description = """\\
ripgrep 將在指定的文件中搜索,結果將顯示 匹配的文本和行號 :
如果搜索的是多個文件(如果不指定任何文件,它將搜索所有文件),那么ripgrep在搜索結果中還會顯示文件名:
或者,可以使用 --file 選項,其中包含要搜索的關鍵詞(表達式)。當你要搜索一組關鍵詞時,可以將其放在一個文件中,然后使用 --file 選項指定:
前后文搜索
有時候,有匹配的前后文是很好的顯示方式,特別是在代碼庫中搜索時。使用前后文搜索,可以使用 -C 或者 --context 選項,該選項接受一個數值,并顯示匹配值的前一行和后一行:
有時,我們只希望看到上面的幾行,包括匹配的行;還有時候,我們只需要下面的行,包括匹配的行。使用選項 -A,或者 --after-context,后跟一個數值,將顯示每個匹配行后的幾行:
至于顯示匹配行前面的幾行,可以使用 -B 或者 --before-context,再提供一個數值(即行數):
列選項
關于 ripgrep 提供的列,有幾個選項。
如果你使用的是 vim,可以使用 --column 選項,這樣將在結果中顯示匹配文本在哪一列,以"行:列"的方式顯示:
與列相關的另一個選項是 -M 或 --max-columns,它取最大列數的值。如果匹配行的列超過最大值,它會告訴你某一特定行在輸出到終端時被忽略:
其他選項
除了上文中提到的,ripgrep 中還有其他幾個選項。比如:可以使用 -s 或 --case-sensitive 選項來區分大小寫:
如果不想區分大小寫,可以使用 -i 或 --ignore-case :
另外,如果你要搜索的目標文件特別大,可以啟用多線程進行搜索。使用 -j 或 --threads 選項,后跟一個數值:
$ rg -j 4 TODO
在搜索中要排除某個關鍵詞或表達式,可以使用 -v 或 --invert-match 選項:
ripgrep 可以實現在壓縮文件(如果壓縮文件是文本文件)中進行搜索,使用 -z 或 --search-zip 選項。其通常與 -a 選項一起使用,-a 選項會將二進制文件也當作文本文件。
ripgrep 是一個非常好用的工具,雖然它暗指要替代 grep,但實際上并不會取代 grep,因為它們的搜索目標是不同的。我們可以在日常工作中按需求來使用。
審核編輯:劉清
-
Linux系統
+關注
關注
4文章
594瀏覽量
27409 -
UTF-8
+關注
關注
0文章
13瀏覽量
7861 -
APT
+關注
關注
1文章
38瀏覽量
10834
發布評論請先 登錄
相關推薦
評論