2021-05-12 14:32:11
如何為多個字串和模式使用Grep
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搜尋多個模式,字串和單詞。
如果您有任何問題或反饋,請隨時發表評論。
相關文章