如何使用Grep 命令查找多個字串
大家好,我是良許!
今天向大家介紹一個非常有用的技巧,那就是使用 grep
命令查找多個字串,
簡單介紹一下,grep
命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式寫出來,
因此,良許向大家分享一下如何使用 grep
命令的多種搜索模式以及使用 grep
搜索多個字串:
多模式 Grep 命令
grep
命令支持三種正則運算式語法:Basic、Extended 和 Perl-compatible ,當沒有指定正則運算式型別時,grep
命令將搜索模式默認為基本正則運算式,
要搜索多個匹配模式,可以使用 OR ( alternation ) 運算子,我們可以用 OR 運算子 |( pipe )指定不同的匹配項,這些匹配項可以是文本字串,也可以是運算式集,值得注意的是,在所有正則運算式運算子中,這個運算子的優先級是最低的,
使用 grep
命令基本正則運算式搜索多個匹配模式的語法如下:
$ grep 'pattern1\|pattern2' filename
這里需要注意的是,始終要用單引號將正則運算式括起來,因為單引號內的內容原樣輸出,被單引號括起的內容不管是常量還是變數不會發生替換,
使用基本正則運算式時,元字符被解釋為字面字符,要保留元字符的特殊含義,必須用反斜杠( \ )對它們進行轉義,這就是為什么我們要轉義 OR 運算子(|),
要將模式解釋為擴展正則運算式,請呼叫 grep -E
(或 --extended-regexp
)選項,使用擴展正則運算式時,不需要對 OR 運算子 (|) 進行轉義:
$ grep -E 'pattern1|pattern2' file
Grep命令搜索多個字串
通常我們認為,文字字串是最基本的模式,
接下來我們將示例,搜索某用戶日志錯誤檔案中出現的所有 fatal、error 和 critical 字串,語法如下:
$ grep 'fatal\|error\|critical' /var/log/nginx/error.log
還需要注意的是,如果要搜索的字串包含空格,需要用雙引號將其括起來,
下面是使用擴展正則運算式的同一個示例,它不需要轉義字符:
$ grep -E 'fatal|error|critical' /var/log/nginx/error.log
默認情況下,grep
命令是區分大小寫的,要在搜索時忽略大小寫,請呼叫 grep
加 -i
(或 --ignore-case
)選項,示例如下:
$ grep -i 'fatal|error|critical' /var/log/nginx/error.log
當你只想搜索某個單詞時,比如你想搜索的是單詞 error
,grep
命令會輸出所有包含 error
字串的行,即它除了會輸出包含 error
單詞的行,還會輸出包含 errorless
或 antiterrorists
等非 error
單詞的行,這樣是極不方便的,
因此要僅回傳指定字串是整詞的行,或者是由非單詞字符括起來的行,可以使用 grep
加 -w
(或 --word-regexp
)選項:
$ grep -w 'fatal|error|critical' /var/log/nginx/error.log
值得注意的是,單詞字符包括有字母、數字字符(比如 a-z、a-Z 和 0-9 )以及下劃線( _ ),所有其他字符都被視為非單詞字符,
總結
在作業中,我們經常需要用到 grep
命令來搜索字串,學會了使用 grep
搜索多個字串這個技巧,一定有機會用上的,實際上,grep
命令遠不止本文所講的功能,如果你對 grep
命令的功能有任何疑問或者還想學習它的其他功能,請留言告訴我唄!
公眾號:良許Linux
有識訓?希望老鐵們來個三連擊,給更多的人看到這篇文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/159.html
標籤:Linux
上一篇:VMware下安裝CentOS
下一篇:git配置http代理