grep是一個(gè)功能強(qiáng)大的命令行工具,可讓您在一個(gè)或多個(gè)輸入文件中搜索與正則表達(dá)式匹配的行,并將每個(gè)匹配的行寫入標(biāo)準(zhǔn)輸出。
在本文中,我們將向您展示如何使用GNU grep搜索多個(gè)字符串或模式。
Grep多種模式
GNU grep支持三種正則表達(dá)式語法,Basic,Extended和Perl兼容。 如果未指定任何正則表達(dá)式類型,則grep會將搜索模式解釋為基本正則表達(dá)式。
要搜索多個(gè)模式,請使用OR(交替)運(yùn)算符。
交替運(yùn)算符 |(豎線)允許您指定不同的可能匹配項(xiàng),這些匹配項(xiàng)可以是文字字符串或表達(dá)式集。 在所有正則表達(dá)式運(yùn)算符中,此運(yùn)算符的優(yōu)先級最低。
使用grep基本正則表達(dá)式搜索多個(gè)模式的語法如下:
grep ‘pattern1|pattern2’ file…
實(shí)例:
[linuxidc@linux:~/www.linuxidc.com]$ grep ‘MainWindow|QComboBox’ linuxidc.py
使用基本正則表達(dá)式時(shí),元字符將解釋為文字字符。 為了保留元字符的特殊含義,必須使用反斜杠()對其進(jìn)行轉(zhuǎn)義。 這就是為什么我們用斜杠轉(zhuǎn)義OR運(yùn)算符(|)的原因。
要將模式解釋為擴(kuò)展的正則表達(dá)式,請調(diào)用grep -E(或–extended-regexp)選項(xiàng)。 使用擴(kuò)展的正則表達(dá)式時(shí),不要轉(zhuǎn)義|運(yùn)算符:
$grep -E ‘pattern1|pattern2’ file…
[linuxidc@linux:~/www.linuxidc.com]$ grep -E ‘MainWindow|QComboBox’ linuxidc.py
有關(guān)如何構(gòu)造正則表達(dá)式的更多信息,請查看我們的文章Grep regex。(見http://www.sfodin.cn/Linux/2020-05/163192.htm)
Grep多個(gè)字符串
文字字符串是最基本的模式。
在以下示例中,我們正在Nginx日志錯(cuò)誤文件中搜索所有出現(xiàn)致命,錯(cuò)誤和嚴(yán)重的單詞:
$grep ‘fatal|error|critical’ /var/log/nginx/error.log
如果要搜索的字符串包含空格,請用雙引號將其引起來。
這是使用擴(kuò)展正則表達(dá)式的相同示例,它消除了對運(yùn)算符|進(jìn)行轉(zhuǎn)義的需要。
$grep -E ‘fatal|error|critical’ /var/log/nginx/error.log
默認(rèn)情況下,grep區(qū)分大小寫。 這意味著將大寫和小寫字符視為不同的字符。
要在搜索時(shí)忽略大小寫,請使用-i選項(xiàng)調(diào)用grep(或 –ignore-case):
$grep -i ‘fatal|error|critical’ /var/log/nginx/error.log
搜索字符串時(shí),grep將顯示該字符串嵌入較大字符串中的所有行。 因此,如果您要搜索“錯(cuò)誤”,則grep還將在較大的單詞(例如“ errorless”或“ antiterrorists”)中嵌入“ error”的行。
要僅返回指定字符串是整個(gè)單詞(用非單詞字符括起來)的那些行,請使用-w(或–word-regexp)選項(xiàng):
$grep -w ‘fatal|error|critical’ /var/log/nginx/error.log
文字字符包括字母數(shù)字字符(a-z,A-Z和0-9)和下劃線(_)。 所有其他字符均視為非單詞字符。
有關(guān)grep選項(xiàng)的更多詳細(xì)信息,請?jiān)L問我們的Grep命令。http://www.sfodin.cn/Linux/2020-05/163191.htm
總結(jié)
我們已經(jīng)向您展示了如何grep搜索多個(gè)模式,字符串和單詞。
如果您有任何問題或反饋,請隨時(shí)發(fā)表評論。