<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何使用Grep命令查找多個(gè)字符串

          共 1942字,需瀏覽 4分鐘

           ·

          2020-09-10 15:03


          點(diǎn)擊「閱讀原文」查看良許原創(chuàng)精品視頻。


          大家好,我是良許!

          今天向大家介紹一個(gè)非常有用的技巧,那就是使用 grep 命令查找多個(gè)字符串。

          簡單介紹一下,grep 命令可以理解為是一個(gè)功能強(qiáng)大的命令行工具,可以用它在一個(gè)或多個(gè)輸入文件中搜索與正則表達(dá)式相匹配的文本,然后再將每個(gè)匹配的文本用標(biāo)準(zhǔn)輸出的格式寫出來。

          因此,良許向大家分享一下如何使用 grep 命令的多種搜索模式以及使用 grep 搜索多個(gè)字符串:

          多模式 Grep 命令

          grep 命令支持三種正則表達(dá)式語法:Basic、ExtendedPerl-compatible 。當(dāng)沒有指定正則表達(dá)式類型時(shí),grep 命令將搜索模式默認(rèn)為基本正則表達(dá)式。

          要搜索多個(gè)匹配模式,可以使用 OR ( alternation ) 運(yùn)算符。我們可以用 OR 運(yùn)算符 |pipe )指定不同的匹配項(xiàng),這些匹配項(xiàng)可以是文本字符串,也可以是表達(dá)式集。值得注意的是,在所有正則表達(dá)式運(yùn)算符中,這個(gè)運(yùn)算符的優(yōu)先級是最低的。

          使用 grep 命令基本正則表達(dá)式搜索多個(gè)匹配模式的語法如下:

          $ grep 'pattern1\|pattern2' filename

          這里需要注意的是,始終要用單引號將正則表達(dá)式括起來,因?yàn)閱我杻?nèi)的內(nèi)容原樣輸出,被單引號括起的內(nèi)容不管是常量還是變量不會(huì)發(fā)生替換。

          使用基本正則表達(dá)式時(shí),元字符被解釋為字面字符。要保留元字符的特殊含義,必須用反斜杠( \ )對它們進(jìn)行轉(zhuǎn)義。這就是為什么我們要轉(zhuǎn)義 OR 運(yùn)算符(|)。

          要將模式解釋為擴(kuò)展正則表達(dá)式,請調(diào)用 grep -E(或 --extended-regexp )選項(xiàng)。使用擴(kuò)展正則表達(dá)式時(shí),不需要對 OR 運(yùn)算符 (|) 進(jìn)行轉(zhuǎn)義:

          $ grep -E 'pattern1|pattern2' file

          Grep命令搜索多個(gè)字符串

          通常我們認(rèn)為,文字字符串是最基本的模式。

          接下來我們將示例,搜索某用戶日志錯(cuò)誤文件中出現(xiàn)的所有 fatal、errorcritical 字符串。語法如下:

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

          還需要注意的是,如果要搜索的字符串包含空格,需要用雙引號將其括起來。

          下面是使用擴(kuò)展正則表達(dá)式的同一個(gè)示例,它不需要轉(zhuǎn)義字符:

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

          默認(rèn)情況下,grep 命令是區(qū)分大小寫的。要在搜索時(shí)忽略大小寫,請調(diào)用 grep-i (或 --ignore-case )選項(xiàng),示例如下:

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

          當(dāng)你只想搜索某個(gè)單詞時(shí),比如你想搜索的是單詞 error ,grep 命令會(huì)輸出所有包含 error 字符串的行,即它除了會(huì)輸出包含 error 單詞的行,還會(huì)輸出包含 errorlessantiterrorists 等非 error 單詞的行,這樣是極不方便的。

          因此要僅返回指定字符串是整詞的行,或者是由非單詞字符括起來的行,可以使用 grep-w (或 --word-regexp )選項(xiàng):

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

          值得注意的是,單詞字符包括有字母、數(shù)字字符(比如 a-z、a-Z 和 0-9 )以及下劃線( _ ),所有其他字符都被視為非單詞字符。

          總結(jié)

          在工作中,我們經(jīng)常需要用到 grep 命令來搜索字符串,學(xué)會(huì)了使用 grep 搜索多個(gè)字符串這個(gè)技巧,一定有機(jī)會(huì)用上的。實(shí)際上,grep 命令遠(yuǎn)不止本文所講的功能,如果你對 grep 命令的功能有任何疑問或者還想學(xué)習(xí)它的其他功能,請留言告訴我唄!


          良許個(gè)人微信


          添加良許個(gè)人微信即送3套程序員必讀資料


          → 精選技術(shù)資料共享

          → 高手如云交流社群





          本公眾號全部博文已整理成一個(gè)目錄,請?jiān)诠娞柪锘貜?fù)「m」獲取!

          推薦閱讀:

          終于,一鍵打通了微信和QQ

          有個(gè)程序員老公有多爽???

          良許被百萬大V安排得服服帖帖,還跟美女小姐姐合影了……


          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹莓派,等等。在公眾號內(nèi)回復(fù)「1024」,即可免費(fèi)獲取??!


          瀏覽 39
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲一区二区三区人妻 | 亚洲国产操逼 | aⅴ黄色电影| 中文字幕无码乱伦 | 日本A级特黄视频论坛 |