使用正規表示式搜尋純文字資料的5個CLI工具

2021-10-09 02:48:48 字數 3033 閱讀 9650

本文將介紹一些用於搜尋文字檔案中匹配字串或模式的命令列工具。這些工具通常與正規表示式(縮寫為regex)一起使用,正規表示式是描述搜尋模式的唯一字串。

1、grep命令

排在第一位的是grep實用工具,它是global regular expression print的縮寫,也是乙個強大的命令列工具,在搜尋檔案中的特定字串或模式時非常方便。

grep預設與現代linux發行版一起發布,並為您提供了返回各種搜尋結果的靈活性。有了grep,你可以執行大量的功能,比如。

搜尋檔案中的字串或匹配模式。

搜尋gzipped檔案中的字串或匹配模式。

計算字串匹配的數量。

列印包含字串或模式的行號。

遞迴搜尋目錄中的字串。

執行反向搜尋(即顯示不符合搜尋條件的字串的結果)。

當搜尋字串時,忽略大小寫敏感性。

使用grep命令的語法非常簡單:

$ grep pattern file
例如,要在乙個檔案中搜尋字串 「linux」,例如,hello.txt,同時忽略大小寫,執行命令:

2、sed命令

sed是stream editor的縮寫,是另乙個有用的命令列工具,用於處理文字檔案中的文字。sed以非互動的方式搜尋、過濾和替換給定檔案中的字串。

預設情況下,sed命令將輸出列印到stdout(標準輸出),這意味著執行的結果被列印在終端上,而不是儲存在檔案中。

sed命令的呼叫方法如下:

$ sed -options command [ file to be edited ]
例如,要用 "linux "替換 "unix "的所有例項,呼叫命令:

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

命令的輸出被儲存到output.txt檔案中,而不是列印在螢幕上。

3、ack命令

ack是乙個用perl編寫的快速、便攜的命令列工具。ack被認為是grep工具的友好替代者,並且以一種視覺上吸引人的方式輸出結果。

ack 命令在檔案或目錄中搜尋包含符合搜尋條件的行。然後,它突出顯示行中匹配的字串。

ack能夠根據檔案的副檔名來區分檔案,並在一定程度上區分檔案中的內容。

ack命令語法:

$ ack [options] pattern [file...]

$ ack -f [options] [directory...]

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

這個搜尋工具相當智慧型,如果使用者沒有提供檔案或目錄,它就會在當前目錄和子目錄中搜尋搜尋模式。

在下面的例子中,沒有提供任何檔案或目錄,但ack已經自動檢測到可用的檔案,並搜尋提供的匹配模式。

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

$ sudo apt install ack-grep    [on debian/ubuntu]

$ sudo dnf install ack-grep [on centos/rhel]

4、 awk命令

awk是一種成熟的指令碼語言,也是一種文字處理和資料處理工具。它搜尋包含搜尋模式的檔案或程式。找到字串或模式時, awk對匹配項或行進行操作,並將結果列印在stdout上。

awk模式用大括號括起來,而整個程式用單引號括起來。

讓我們以最簡單的例子為例。假設您正在列印系統日期,如下所示:

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

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

$ date | awk ''
上面的命令將顯示星期幾和月份的日期。

silver searcher是乙個跨平台、開源的**搜尋工具,類似於ak,但強調速度。它可以讓您在最短的時間內輕鬆搜尋檔案中的特定字串。

語法:

$ ag options search_pattern /path/to/file
例如,要在檔案hello.txt中搜尋字串 「linux」,請執行命令:

這些是幾種在linux中用於搜尋,過濾和處理文字的廣泛使用的命令列工具。

a5互聯

正規表示式記錄 純使用記錄

代表不同的匹配次數,根據情況修改 更新2016 08 27 匹配數字字母 a za z0 9 匹配中文 u4e00 u9fa5 匹配非特殊字元 允許大小寫字母 數字 中文 下劃線 減號 a za z0 9 u4e00 u9fa5 有些情況會需要排除中文 a za z0 9 匹配小數 小數點前限制15...

使用正規表示式將Html轉換為純文字

在網頁剛流行起來的時候,提取html中的文字有乙個簡單的方法,就是將html文字 包含標記 中的所有以 符號開頭到以 符號之間的內容去掉即可。但對於現在複雜的網頁而言,用這種方法提取出來的文字會有大量的空格 空行 script段落 還有一些html轉義字元,效果很差。下面用正規表示式來提取html中...

mysql 使用正規表示式搜尋

mysql僅僅支援正規表示式的乙個很小的子集 檢索prob name包含文字四位數字且數字末尾是 000 的所有行 select prob name from products where prob name regexp 000 order by prob name 這個例子可以用like來完成,...