衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用grep命令的多種搜索模式及搜索多個字符串

如意 ? 來源:良許Linux微信公眾號 ? 作者:良許 ? 2020-09-07 11:24 ? 次閱讀

大家好,我是良許!

今天向大家介紹一個非常有用的技巧,那就是使用 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 命令的功能有任何疑問或者還想學習它的其他功能,請留言告訴我唄!
責編AJX

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210404
  • 操作系統
    +關注

    關注

    37

    文章

    6896

    瀏覽量

    123751
  • 字符串
    +關注

    關注

    1

    文章

    585

    瀏覽量

    20603
  • grep
    +關注

    關注

    0

    文章

    23

    瀏覽量

    4745
收藏 人收藏

    評論

    相關推薦

    grep命令搜索字符串之技巧

    做嵌入式linux開發的,相信大家對source insight 再熟悉不過了,source insight非常強大,尤其當我們的工程浩大,想要搜索個字符串如函數、宏時,source
    發表于 12-17 23:34

    如何判斷一個字符串開頭?

    命令以“$Cmd,”開頭,以“,”分隔,以“*”結尾。單片機回復以“$Message,”開頭,以“,”分隔,以“*”結尾。如果錯誤這以“$Message,ERROR,”開頭,以“,”分隔,以“*”結尾。我想問我如何判斷一個字符串開頭,判斷一
    發表于 09-11 22:13

    UART_LOOP_查詢接收多個字符串

    UART_LOOP_查詢接收多個字符串源碼
    發表于 01-21 11:11 ?6次下載

    Labview之搜索替換字符串

    Labview之搜索替換字符串,很好的Labview資料,快來下載學習吧。
    發表于 04-19 10:23 ?0次下載

    Linux中用grep命令搜索單詞及統計匹配的行數

    使用 grep 命令搜索多個單詞要使用 grep 命令
    發表于 04-02 14:46 ?660次閱讀

    如何利用Java判斷一個字符串是否包含某個字符

    如何利用Java通過不同的方法來判斷一個字符串是否包含某個字符。 **2 ****方法** 1. .contains方法
    的頭像 發表于 02-17 15:13 ?1560次閱讀
    如何利用Java判斷一<b class='flag-5'>個字符串</b>是否包含某<b class='flag-5'>個字符</b>

    C語言字符串的引用方式

    在C語言程序中,字符串是存放在字符數組中的。 2. 用字符數組存放一個字符串,可以通過數組名和下標引用字符串中的一
    的頭像 發表于 03-10 14:57 ?2005次閱讀

    Python中檢查字符串包含的方法

    Python 有多種處理字符串的方法。今天我們介紹如何檢查一個字符串中是否包含另一個字符串
    的頭像 發表于 05-14 16:02 ?1.6w次閱讀

    KUKA機器人: 如何比較兩個字符串變量

    用功能 StrComp() 可以比較兩個字符串變量。 Comp = StrComp( StrComp1[], StrComp2[], CaseSens )
    的頭像 發表于 07-10 09:27 ?1055次閱讀

    mysql字符串包含某個字符串

    將詳盡、詳實、細致地探討MySQL中字符串包含的實現方法。 在MySQL中,可以通過使用內建函數和通配符來實現字符串包含的操作。下面將詳細介紹幾種常用的方法: 使用LIKE通配符: LIKE是MySQL中用于模式匹配的通配符,可
    的頭像 發表于 11-16 14:52 ?3926次閱讀

    linux搜索文件里的字符串

    在Linux系統中,我們可以使用各種方法來搜索文件中的字符串。在本文中,我將為您詳細介紹幾種常用的方法和工具。讓我們開始吧! grep命令 grep
    的頭像 發表于 11-23 10:20 ?1610次閱讀

    oracle判斷字符串包含某個字符

    包含某個字符,以及介紹使用的相關函數。 正文: 一、使用INSTR函數進行判斷: INSTR函數是Oracle中最常用的字符串函數之一,它用于查找字符串中是否包含某個字符。INSTR函
    的頭像 發表于 12-06 09:53 ?1.5w次閱讀

    oracle字符串split成多個

    Oracle是一種廣泛使用的關系型數據庫管理系統,它提供了許多強大的功能和函數,用于處理和操作數據。其中之一就是字符串分割(split)方法,該方法用于將一個字符串按照指定的分隔符分割成多個
    的頭像 發表于 12-06 09:54 ?5453次閱讀

    Linux grep命令詳解

    Linux grep命令是一種非常常用的文本搜索工具,它可以在給定的文件中搜索匹配的字符串,并輸出匹配的行。
    的頭像 發表于 12-25 09:39 ?265次閱讀

    字符串反轉的實現方式

    在編程中,字符串反轉是一個基礎而重要的操作,它涉及到將一個字符串中的字符順序顛倒過來。這個操作在多種編程語言中都有不同的實現方式,本文將探討幾種常見的
    的頭像 發表于 01-07 15:27 ?206次閱讀
    权威百家乐信誉网站| 鄂温| 百家乐官网可以出千吗| 芝加哥百家乐的玩法技巧和规则 | 致胜百家乐官网软件| 大发888大发娱乐场| 奇迹百家乐官网的玩法技巧和规则 | 百家乐看图赢钱| 云鼎娱乐场送彩金| 百家乐美女荷官| 洛浦县| 线上百家乐玩法| 北京百家乐官网网上投注| 威尼斯人娱乐场28gxpjwnsr| 云顶国际娱乐| 赢家百家乐官网的玩法技巧和规则| bet365官方网址| 百家乐二代皇冠博彩| 百家乐官网连闲几率| KTV百家乐的玩法技巧和规则| 南京百家乐官网赌博现场被| 六合彩特码开奖结果| 真人百家乐视频赌博| 网络百家乐官网输了很多钱| 貔喜脉动棋牌下载| 百家乐官网微心打法| 英皇百家乐官网的玩法技巧和规则| 蓝盾百家乐庄家利润分| bet365投注体育比赛合法吗| 百家乐官网最新的投注方法| 百家乐开放词典新浪| 潘多拉百家乐官网的玩法技巧和规则 | 威尼斯人娱乐网网上百家乐| 百家乐官网里靴是什么意识| 大发888娱乐真钱游戏下载| 百家乐能赢到钱吗| 大丰收娱乐城开户| 百家乐官网二代理解| 电子百家乐破| 凉城县| 百家乐官网最全打法|