6 個使用正則表達式搜索文本中內容的工具
本指南介紹了一些命令行工具,這些工具可用於搜索文本文件中的匹配字符串或模式。這些工具通常與正則表達式一起使用。
grep 命令
首先出現的是 grep 實用工具——它是Global Regular Expression Print
的首字母縮寫,是一種強大的命令行工具,在搜索文件中的特定字符串或模式時非常方便。
例如,要在忽略大小寫的情況下搜索文件sshd_conf.txt
中包含ssh
字符串的行,請運行以下命令:
[root@localhost ~]# grep -i ssh sshd_conf.txt
想要了解更多關於 grep 命令的使用方式,可以查看 grep 的手冊:man grep
sed 命令
sed 是 Stream Editor 的縮寫,用於操作文本文件中的文本。sed 以非交互方式搜索、篩選和替換給定文件中的字符串。
默認情況下,sed 命令將輸出打印到標準輸出,這意味着執行的結果打印在終端上,而不是保存在文件中。
例如,將文件/etc/selinux/config
中的SELINUX=enforcing
改成SELINUX=disabled
,請調用以下命令:
[root@localhost ~]# sed -i '/^SELINUX=/s/enforcing/disabled/g' /etc/selinux/config
修改之後,保存退出,重啓操作系統,這樣可以關閉 selinux。
想要了解更多關於 sed 命令的使用方式,可以查看 sed 的手冊:man sed
ack 命令
Ack 是用 Perl 編寫的快速且可移植的命令行工具。Ack 被認爲是 grep 的替代品,並以視覺吸引人的方式輸出結果。Ack 命令在文件或目錄中搜索包含與搜索條件匹配的行。然後突出顯示各行中的匹配字符串。
安裝方式 (Centos7 系統):
[root@localhost ~]# yum -y install ack
例如,要在 sshd_conf.txt 中查找包含 ssh 的行,不區分大小寫,請運行:
[root@localhost ~]# ack -i ssh sshd_conf.txt
搜索出來的關鍵字會以高亮的方式顯示出來。
搜索工具非常智能,如果用戶未提供文件或目錄,它會在當前目錄和子目錄中搜索。在下面的示例中,沒有提供文件或目錄,但是 ack 自動檢測到了目錄和子目錄中匹配字符串的文件裏面的行:
[root@localhost ~]# ack -i ssh
想要了解更多關於 ack 命令的使用方式,可以查看 ack 的手冊:man ack
awk 命令
awk 是一種成熟的腳本語言,也是文本處理和數據處理工具。讓我們以最簡單的例子爲例。假設正在打印系統日期,只想打印第一個值,即星期幾。在這種情況下,將輸出通過管道傳輸到 awk 中,如下所示:
[root@localhost ~]# date
Mon Nov 23 10:47:42 CST 2020
[root@localhost ~]# date |awk '{print $1}'
Mon
要顯示後面的值,請使用逗號分隔它們,如下所示:
[root@localhost ~]# date |awk '{print $6,$2,$3}'
2020 Nov 23
想要了解更多關於 awk 命令的使用方式,可以查看 awk 的手冊:man awk
****| Silver Searcher 工具
Silver Searcher 是一個類似於 ack 的跨平臺和開源代碼搜索工具,但注重速度。它可以在最短的時間內輕鬆搜索文件中的特定字符串:
安裝方式 (Centos7):
[root@localhost ~]# yum -y install epel-release && yum makecache
[root@localhost ~]# yum -y install the_silver_searcher
例如,在/etc/passwd
文件中搜索字符串 "nologin",使用以下命令:
[root@localhost ~]# ag nologin /etc/passwd
想要了解更多關於 Silver Searcher 工具的使用方式,可以查看 ag 的手冊:man ag
ripgrep 工具
ripgrep 命令行工具。Ripgrep 是用於正則表達式模式的跨平臺實用程序。它比前面提到的所有搜索工具速度都快得多,並且可以遞歸搜索目錄以找到匹配的模式。在速度和性能方面,沒有其他工具比 Ripgrep 出色。
默認情況下,ripgrep 將跳過二進制文件 / 隱藏的文件和目錄。另外,在默認情況下,它不會搜索被. gitignore / .ignore / .rgignore 文件忽略的文件。
安裝 ripgrep(Centos7):
[root@localhost ~]# yum -y install yum-utils
[root@localhost ~]# sudo yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo
[root@localhost ~]# yum -y install ripgrep
例如,要在當前目錄內的文件中搜索字符串 “Linux”,請運行以下命令:
[root@localhost ~]# rg Linux
想要了解更多關於 ripgrep 命令的使用方式,可以查看 rg 的手冊:man rg
總結
這些是 Linux 中用於搜索、過濾和操作文本的最廣泛使用的命令行工具。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/nVXjfCDm6dXk4Af2xdi4iA