多個字串和模式使用grep

大雄45發表於2022-05-19
導讀 grep是一個功能強大的 行工具,可讓您在一個或多個輸入檔案中搜尋與正規表示式匹配的行,並將每個匹配的行寫入標準輸出。

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

Grep多種模式

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

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

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

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

grep 'pattern1\|pattern2' file...

例項:

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

多個字串和模式使用grep多個字串和模式使用grep

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

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

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

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

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搜尋多個模式,字串和單詞。

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

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2892943/,如需轉載,請註明出處,否則將追究法律責任。

相關文章