Linux 新變革已經(jīng)開始,文本三劍客地位不保!
共 5637字,需瀏覽 12分鐘
·
2024-04-18 22:46
眾所周知,在 Linux 系統(tǒng)中,awk、grep、sed 這三個命令,因其功能強(qiáng)大,日常使用頻繁,在 Linux 系統(tǒng)下處理文本是個非常不錯的神器,grep 用于查找,sed 用于取行和替換,awk 用于運(yùn)算。因此,這三個命令一直都有著文本三劍客的稱號!
但是,隨著這個命令的出現(xiàn),怕是三劍客的地位要不保了!
今天,我們就來聊一聊這個強(qiáng)大的、橫空出世的命令:ripgrep!
ripgrep 簡介
ripgrep 是一款基于 Rust 語言開發(fā)的文本搜索工具,是一款面向行的搜索工具,它遞歸地在當(dāng)前目錄中搜索正則表達(dá)式模式。默認(rèn)情況下,ripgrep 將尊重 Gitignore 規(guī)則,并自動跳過隱藏文件/目錄和二進(jìn)制文件。
ripgrep 可以在多平臺下運(yùn)行,支持 Mac、Linux 和 Windows 等平臺。
ripgrep 命令的作用在于幫助用戶在指定的目錄中快速定位包含特定內(nèi)容的文本文件,從而極大的提高了我們的日常工作效率。它在搜索查找的過程還支持正則,使用我們的搜索查找模式更加的靈活,輕松實(shí)現(xiàn)我們想要的結(jié)果。
項(xiàng)目地址:https://github.com/BurntSushi/ripgrep
ripgrep 特點(diǎn)
-
非常快速的搜索速度。 -
極為豐富和實(shí)用的搜索功能。 -
支持查找替換。 -
支持搜索多種中文編碼的文件(使用--encoding指定編碼)。 -
支持通過配置文件.ripgreprc改變默認(rèn)行為。 -
支持將搜索結(jié)果輸出為json格式。 -
支持搜索多種格式的壓縮文件,例如gz、bz2等。 -
對輸出結(jié)果進(jìn)行排序。 -
默認(rèn)會讀取.gitignore文件并忽略其中設(shè)置的文件(可以使用--no-ignore打開)。 -
默認(rèn)不會讀取隱藏文件(可以使用--hidden打開)。 -
默認(rèn)不會搜索非文本文件(可以使用--text打開)。
ripgrep 使用場景
ripgrep是一個非常好用的工具,它可以在多種場景下使用,例如:
-
在代碼搜索方面:ripgrep可以快速搜索代碼文件,查找特定的代碼模式或函數(shù)。 -
日志文件分析:ripgrep可以用于分析大型日志文件,快速查找特定的文本模式或關(guān)鍵字。 -
配置文件檢查:ripgrep可以檢查配置文件,查找特定的配置項(xiàng)或錯誤。 -
任何需要快速搜索特定文本內(nèi)容的場景:ripgrep的高效搜索引擎使其在海量文本數(shù)據(jù)中定位所需信息變得輕而易舉。
ripgrep 安裝
ripgrep 的二進(jìn)制名稱是 rg。
對于 Windows 系統(tǒng),推薦直接從GitHub Releases頁面下載對應(yīng)的ripgrep程序,解壓并加入到環(huán)境變量中。
Mac 系統(tǒng)
brew install ripgrep
rhel/centos7/8 系統(tǒng)
$ sudo yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo
$ sudo yum install ripgrep
[root@CentOS7-1 ~]# rg --version
ripgrep 13.0.0
-SIMD -AVX (compiled)
+SIMD +AVX (runtime)
ripgrep 使用操作
語法格式如下
USAGE:
rg [OPTIONS] PATTERN [PATH ...]
rg [OPTIONS] -e PATTERN ... [PATH ...]
rg [OPTIONS] -f PATTERNFILE ... [PATH ...]
rg [OPTIONS] --files [PATH ...]
rg [OPTIONS] --type-list
command | rg [OPTIONS] PATTERN
rg [OPTIONS] --help
rg [OPTIONS] --version
For more information try --help
ripgrep支持多種命令行參數(shù)和選項(xiàng),例如:
-a 或 --text:搜索二進(jìn)制文件。
-j 或 --threads <NUM>:指定搜索時使用的線程數(shù)。
-t 或 --type <TYPE>:只搜索指定類型的文件。
--type-list:列出支持的文件類型。
-u 或 --unrestricted:搜索 .gitignore 里的文件。
-u 或 --uu:搜索二進(jìn)制文件。
-u 或 --uuu:搜索大文件。
-V 或 --version:打印版本信息。
-H 或 --with-filename:打印匹配的文件路徑。
-w 或 --word-regexp:把搜索參數(shù)作為單獨(dú)單詞匹配。
--sort <SORTBY>:將輸出結(jié)果按降序進(jìn)行排序。
--stats:打印出統(tǒng)計(jì)結(jié)果。
--vimgrep:每一次匹配都單獨(dú)打印一行。
實(shí)例操作
搜索當(dāng)前目錄下所有文件中的字符串“hello”:
rg hello
搜索當(dāng)前目錄及其子目錄下所有文件中包含字符串“hello”的文件,并將結(jié)果輸出到終端:
rg -l hello
搜索當(dāng)前目錄及其子目錄下所有文件中包含字符串“hello”的文件,并將結(jié)果輸出到文件output.txt中:
rg -o hello > output.txt
在當(dāng)前目錄及其子目錄下遞歸搜索所有.txt文件,并搜索字符串“hello”:
rg hello *.txt
在當(dāng)前目錄及其子目錄下遞歸搜索所有文件,并搜索字符串“hello”,忽略大小寫:
rg -i hello
在當(dāng)前目錄及其子目錄下遞歸搜索所有文件,并搜索字符串“hello”,只顯示匹配行的行號:
rg --line-number hello
搜索當(dāng)前目錄及其子目錄下所有以“.txt”結(jié)尾的文件中包含字符串“hello”的文件,并將結(jié)果輸出到終端,同時顯示匹配行的行號:
rg --line-number hello *.txt
在當(dāng)前目錄及其子目錄下遞歸搜索所有文件,并搜索字符串“hello”,忽略名為.git的文件:
rg hello --no-ignore .git
ripgrep可以搜索壓縮文件中的內(nèi)容,如.gz、.bz2等。例如,要搜索所有包含“GPL”的gzip壓縮文件,可以使用:
[root@CentOS7-1 ~]# rg GPL *.gz
apache-tomcat-8.5.55.tar.gz: binary file matches (found "\0" byte around offset 3)
mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz: binary file matches (found "\0" byte around offset 3)
node-v0.10.25.tar.gz: binary file matches (found "\0" byte around offset 27)
node-v18.16.1.tar.gz: binary file matches (found "\0" byte around offset 27)
zellij-x86_64-unknown-linux-musl.tar.gz: binary file matches (found "\0" byte around offset 3)
ripgrep 還可以通過將匹配的文本替換為一些其他文本,比如:用 FAST 替換所有出現(xiàn)的 fast ,使用 ripgrep 的 --replace參數(shù):
[root@CentOS7-1 ripgrep-0.7.1]# rg fast README.md --replace FAST
75: FASTer than both. (N.B. It is not, strictly speaking, a "drop-in" replacement
88: color and full Unicode support. Unlike GNU grep, `ripgrep` stays FAST while
119:### Is it really FASTer than everything else?
124:Summarizing, `ripgrep` is FAST because:
129: optimizations to make searching very FAST.
注意:這個功能只是替換字符輸出,并不是真正的替換掉文本的內(nèi)容。
打印輸出系統(tǒng)內(nèi)置的文件類型
[root@CentOS7-1 ~]# rg --type-list
更多相關(guān)的使用,大家可以參考官方的文檔,或下載自行體驗(yàn)。
總結(jié)
總體使用下來,可以說 ripgrep 是一個快速、高效、非常優(yōu)秀的文本搜索工具,它可以在指定的目錄及其子目錄下的文件中搜索匹配的字符串或正則表達(dá)式。
它提供了豐富的選項(xiàng)和參數(shù),可以根據(jù)需要進(jìn)行定制和調(diào)整,具有快速、高效、可定制性強(qiáng)等特點(diǎn),能夠滿足不同用戶的搜索需求。
春招已經(jīng)開始啦,大家如果不做好充足準(zhǔn)備的話,春招很難找到好工作。
送大家一份就業(yè)大禮包,大家可以突擊一下春招,找個好工作!
