使用正則表達式搜尋純文字數據的5個CLI工具

2020-08-12 09:00:57

本文將介紹一些用於搜尋文字檔案中匹配字串或模式的命令列工具。這些工具通常與正則表達式(縮寫爲REGEX)一起使用,正則表達式是描述搜尋模式的唯一字串。
1、Grep命令
排在第一位的是grep實用工具,它是Global Regular Expression Print的縮寫,也是一個強大的命令列工具,在搜尋檔案中的特定字串或模式時非常方便。
Grep預設與現代Linux發行版一起發佈,併爲您提供了返回各種搜尋結果的靈活性。有了grep,你可以執行大量的功能,比如。
搜尋檔案中的字串或匹配模式。
搜尋Gzipped檔案中的字串或匹配模式。
計算字串匹配的數量。
列印包含字串或模式的行號。
遞回搜尋目錄中的字串。
執行反向搜尋(即顯示不符合搜尋條件的字串的結果)。
當搜尋字串時,忽略大小寫敏感性。
使用grep命令的語法非常簡單:

$ grep pattern FILE

例如,要在一個檔案中搜尋字串 「Linux」,例如,hello.txt,同時忽略大小寫,執行命令:

$ grep -i Linux hello.txt

在这里插入图片描述

2、sed命令
Sed是Stream Editor的縮寫,是另一個有用的命令列工具,用於處理文字檔案中的文字。Sed以非互動的方式搜尋、過濾和替換給定檔案中的字串。
預設情況下,sed命令將輸出列印到STDOUT(標準輸出),這意味着執行的結果被列印在終端上,而不是儲存在檔案中。
Sed命令的呼叫方法如下:

$ sed -OPTIONS command [ file to be edited ]

例如,要用 "Linux "替換 "Unix "的所有範例,呼叫命令:

$ sed 's/Unix/Linux' hello.txt

在这里插入图片描述

如果要重定向輸出而不是在終端上列印輸出,請使用( > )如圖所示的重定向符號。

$ sed 's/Unix/Linux' hello.txt > output.txt

在这里插入图片描述

命令的輸出被儲存到output.txt檔案中,而不是列印在螢幕上。
3、Ack命令
Ack是一個用Perl編寫的快速、便攜的命令列工具。Ack被認爲是grep工具的友好替代者,並且以一種視覺上吸引人的方式輸出結果。
Ack 命令在檔案或目錄中搜尋包含符合搜尋條件的行。然後,它突出顯示行中匹配的字串。
Ack能夠根據檔案的擴充套件名來區分檔案,並在一定程度上區分檔案中的內容。
Ack命令語法:

$ ack [options] PATTERN [FILE...]
$ ack -f [options] [DIRECTORY...]

例如,要檢查搜尋詞Linux,請執行:

$ ack Linux hello.txt

在这里插入图片描述

這個搜尋工具相當智慧,如果使用者沒有提供檔案或目錄,它就會在當前目錄和子目錄中搜尋搜尋模式。
在下面 下麪的例子中,沒有提供任何檔案或目錄,但ack已經自動檢測到可用的檔案,並搜尋提供的匹配模式。

$ ack Linux

在这里插入图片描述

要在系統上安裝ACK,請執行命令:

$ sudo apt install ack-grep    [On Debian/Ubuntu]
$ sudo dnf install ack-grep    [On CentOS/RHEL]

4、 Awk命令
Awk是一種成熟的指令碼語言,也是一種文字處理和數據處理工具。它搜尋包含搜尋模式的檔案或程式。找到字串或模式時, awk對匹配項或行進行操作,並將結果列印在STDOUT上。
AWK模式用大括號括起來,而整個程式用單引號括起來。
讓我們以最簡單的例子爲例。假設您正在列印系統日期,如下所示:

$ date

在这里插入图片描述

假設您只想列印第一個值,也就是星期幾。在這種情況下,將輸出通過管道傳輸到awk中,如下所示:

$ date | awk '{print $1}'

要顯示後續值,請使用逗號分隔它們,如下所示:

$ date | awk '{print $1,$2}'

上面的命令將顯示星期幾和月份的日期。
在这里插入图片描述

5、Silver Searcher
silver searcher是一個跨平臺、開源的程式碼搜尋工具,類似於ak,但強調速度。它可以讓您在最短的時間內輕鬆搜尋檔案中的特定字串。
語法:

$ ag OPTIONS search_pattern /path/to/file

例如,要在檔案hello.txt中搜尋字串 「Linux」,請執行命令:

$ ag Linux hello.txt

在这里插入图片描述

這些是幾種在Linux中用於搜尋,過濾和處理文字的廣泛使用的命令列工具。
A5互聯https://www.a5idc.net/