可以使用grep命令在文本中查找指定的字符串,可以把grep理解成字符查找工具。
默認情況下,grep是區分大小寫的,使用 -i 選項搜索時忽略大小寫。
如果我們想確定zabbix用戶在passwd文件的第壹行,使用-n選項,顯示文本所在行號。
如果想知道文件中有多少行包含了指定字符串,使用-c選項可只統計符號條件的行,而不打印出來。
如果我們只想看到被匹配的關鍵字,而不是把關鍵字所在的整行都打印出來,使用-o選項,但是需要註意,-o選項會把每個匹配到的關鍵字都單獨顯示在壹行中進行輸出。
顯示關鍵字附件的信息 -A after -B before -C content
如果我們需求精確匹配,就是搜索的關鍵字作為壹個獨立的單詞存在,而不是包含在某個字符串中,使用-w選項,這時候nologin就沒有被匹配到。如果想取反,就是查找不包含指定字符串的行,使用-v選項。
如果想同時匹配多個目標,使用-e選項,他們之間是“或”的關系。
如果只是想利用grep判斷文本中是否包含某個字符串,妳只關心有沒有匹配到,而不想輸出,可以使用-q選項,開啟靜默模式。
掌握以上用法,基礎的就夠了,等學習了“正則表達式”,再回來結合壹起發揮威力。
-i:在搜索的時候忽略大小寫
-n:顯示結果所在行號
-c:統計匹配到的行數,註意,是匹配到的總行數,不是匹配到的次數
-o:只顯示符合條件的字符串,但是不整行顯示,每個符合條件的字符串單獨顯示壹行
-v:輸出不帶關鍵字的行(反向查詢,反向匹配)
-w:匹配整個單詞,如果是字符串中包含這個單詞,則不作匹配
-Ax:在輸出的時候包含結果所在行之後的指定行數,這裏指之後的x行,A:after
-Bx:在輸出的時候包含結果所在行之前的指定行數,這裏指之前的x行,B:before
-Cx:在輸出的時候包含結果所在行之前和之後的指定行數,這裏指之前和之後的x行,C:context
-e:實現多個選項的匹配,邏輯or關系
-q:靜默模式,不輸出任何信息,當我們只關心有沒有匹配到,卻不關心匹配到什麽內容時,我們可以使用此命令,然後,使用”echo $?”查看是否匹配到,0表示匹配到,1表示沒有匹配到。
-P:表示使用兼容perl的正則引擎。
-E:使用擴展正則表達式,而不是基本正則表達式,在使用”-E”選項時,相當於使用egrep。
字符類 [ ] 括號內的僅匹配其中壹個字符
如果我想要搜尋 test 或 taste 這兩個單字時,可以發現到,其實她們有***通的 't?st'
字符類的反向選擇 [^]
連續字符 [a-zA-Z0-9]
匹配行首 ^
結合[]時要註意^的位置
匹配行尾 $
我們來看 . 和 * 在正則中的含義
. 表示任意壹個字符
星號*表示重復他前面的字符0次到無窮多次
限定範圍的字符{} ,但因為 { 與 } 的符號在 shell 是有特殊意義的,因此, 我們必須要使用字符 \ 來讓他失去特殊意義才行。
使用擴展grep -E
fgrep 查詢速度比grep命令快,但是不夠靈活:它只能找固定的文本,而不是規則表達式。
在文本中找出包含#的