首頁 > 軟體

如何為多個字串和模式使用Grep

2020-06-16 16:11:50

grep是一個功能強大的命令列工具,可讓您在一個或多個輸入檔案中搜尋與正規表示式匹配的行,並將每個匹配的行寫入標準輸出。

在本文中,我們將向您展示如何使用GNU grep搜尋多個字串或模式。

Grep多種模式

GNU grep支援三種正規表示式語法,Basic,Extended和Perl相容。 如果未指定任何正規表示式型別,則grep會將搜尋模式解釋為基本正規表示式。

要搜尋多個模式,請使用OR(交替)運算子。

交替運算子 |(豎線)允許您指定不同的可能匹配項,這些匹配項可以是文字字串或表示式集。 在所有正規表示式運算子中,此運算子的優先順序最低。

使用grep基本正規表示式搜尋多個模式的語法如下:

grep 'pattern1|pattern2' file...

範例:

[linuxidc@linux:~/www.linuxidc.com]$ grep 'MainWindow|QComboBox' linuxidc.py

使用基本正規表示式時,元字元將解釋為文字字元。 為了保留元字元的特殊含義,必須使用反斜槓()對其進行跳脫。 這就是為什麼我們用斜槓跳脫OR運算子(|)的原因。

要將模式解釋為擴充套件的正規表示式,請呼叫grep -E(或--extended-regexp)選項。 使用擴充套件的正規表示式時,不要跳脫|運算子:

$grep -E 'pattern1|pattern2' file...

[linuxidc@linux:~/www.linuxidc.com]$ grep -E 'MainWindow|QComboBox' linuxidc.py

有關如何構造正規表示式的更多資訊,請檢視我們的文章Grep regex。(見https://www.linuxidc.com/Linux/2020-05/163192.htm

Grep多個字串

文字字串是最基本的模式。

在以下範例中,我們正在Nginx紀錄檔錯誤檔案中搜尋所有出現致命,錯誤和嚴重的單詞:

$grep 'fatal|error|critical' /var/log/nginx/error.log

如果要搜尋的字串包含空格,請用雙引號將其引起來。

這是使用擴充套件正規表示式的相同範例,它消除了對運算子|進行跳脫的需要。

$grep -E 'fatal|error|critical' /var/log/nginx/error.log

預設情況下,grep區分大小寫。 這意味著將大寫和小寫字元視為不同的字元。

要在搜尋時忽略大小寫,請使用-i選項呼叫grep(或 --ignore-case):

$grep -i 'fatal|error|critical' /var/log/nginx/error.log

搜尋字串時,grep將顯示該字串嵌入較大字串中的所有行。 因此,如果您要搜尋“錯誤”,則grep還將在較大的單詞(例如“ errorless”或“ antiterrorists”)中嵌入“ error”的行。

要僅返回指定字串是整個單詞(用非單詞字元括起來)的那些行,請使用-w(或--word-regexp)選項:

$grep -w 'fatal|error|critical' /var/log/nginx/error.log

文字字元包括字母數位字元(a-z,A-Z和0-9)和下劃線(_)。 所有其他字元均視為非單詞字元。

有關grep選項的更多詳細資訊,請存取我們的Grep命令。https://www.linuxidc.com/Linux/2020-05/163191.htm

總結

我們已經向您展示了如何grep搜尋多個模式,字串和單詞。

如果您有任何問題或反饋,請隨時發表評論。


IT145.com E-mail:sddin#qq.com