日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux grep 详细深入学习

發布時間:2025/3/21 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux grep 详细深入学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習原文:https://www.cnblogs.com/flyor/p/6411140.html

linux中grep命令的用法

grep命令的常用格式為:grep ?[選項] ?”模式“ ?[文件]

grep 三兄弟:grep egrep fgrep

常用選項:

  -E :開啟擴展(Extend)的正則表達式。

  -i :忽略大小寫(ignore case)。

  -v :反過來(invert),只打印沒有匹配的,而匹配的反而不打印。

  -n :顯示行號

  -w :被匹配的文本只能是單詞,而不能是單詞中的某一部分,如文本中有liker,而我搜尋的只是like,就可以使用-w選項來避免匹配liker

  -c :顯示總共有多少行被匹配到了,而不是顯示被匹配到的內容,注意如果同時使用-cv選項是顯示有多少行沒有被匹配到。

  -o :只顯示被模式匹配到的字符串(有結果字符串就顯示幾個字符串,配合wc -l可以統計出現的次數)。

  --color :將匹配到的內容以顏色高亮顯示。

  -A ?n:顯示匹配到的字符串所在的行及其后n行,after

  -B ?n:顯示匹配到的字符串所在的行及其前n行,before

  -C ?n:顯示匹配到的字符串所在的行及其前后各n行,context

直接輸入要匹配的字符串,這個可以用fgrep(fast grep)代替來提高查找速度

?

基本正則表達式的使用:

匹配字符:

      . :任意一個字符。

      [abc] :表示匹配一個字符,這個字符必須是abc中的一個。

      [a-zA-Z] :表示匹配一個字符,這個字符必須是a-z或A-Z這52個字母中的一個。

      [^123] :匹配一個字符,這個字符是除了1、2、3以外的所有字符。

      對于一些常用的字符集,系統做了定義:

      [A-Za-z] 等價于 [[:alpha:]]

      [0-9] 等價于 [[:digit:]]

      [A-Za-z0-9] 等價于 [[:alnum:]]

      tab,space 等空白字符 [[:space:]]

      [A-Z] 等價于 [[:upper:]]

      [a-z] 等價于 [[:lower:]]

      標點符號 [[:punct:]]

匹配次數:

      \{m,n\} :匹配其前面出現的字符至少m次,至多n次。
      \? :匹配其前面出現的內容0次或1次,等價于\{0,1\}。
      * :匹配其前面出現的內容任意次,等價于\{0,\},所以 ".*" 表述任意字符任意次,即無論什么內容全部匹配。

位置錨定:

      ^ :錨定行首

      $ :錨定行尾。技巧:"^$"用于匹配空白行。

      \b或\<:錨定單詞的詞首。如"\blike"不會匹配alike,但是會匹配liker

      \b或\>:錨定單詞的詞尾。如"\blike\b"不會匹配alike和liker,只會匹配like

      \B :與\b作用相反。

分組及引用:

      \(string\) :將string作為一個整體方便后面引用

        \1 :引用第1個左括號及其對應的右括號所匹配的內容。

        \2 :引用第2個左括號及其對應的右括號所匹配的內容。

        \n :引用第n個左括號及其對應的右括號所匹配的內容。

?

擴展的(Extend)正則表達式(注意要使用擴展的正則表達式要加-E選項,或者直接使用egrep):

    匹配次數

      * :和基本正則表達式一樣

      ? :基本正則表達式是\?,這里沒有\。

      {m,n} :相比基本正則表達式也是沒有了\。

      + :匹配其前面的字符至少一次,相當于{1,}。

?

    位置錨定:和基本正則表達式一樣。

?

    分組及引用

      (string) :相比基本正則表達式也是沒有了\。

        \1 :引用部分和基本正則表達式一樣。

        \n :引用部分和基本正則表達式一樣。

?

    或者

      a|b :匹配a或b,注意a是指 | 的左邊的整體,b也同理。比如 C|cat 表示的是 C或cat,而不是Cat或cat,如果要表示Cat或cat,則應該寫為 (C|c)at 。記住(string)除了用于引用還用于分組。

    ?

注1:默認情況下,正則表達式的匹配工作在貪婪模式下,也就是說它會盡可能長地去匹配,比如某一行有字符串 abacb,如果搜索內容為 "a.*b" 那么會直接匹配 abacb這個串,而不會只匹配ab或acb。

注2:所有的正則字符,如 [ 、* 、( 等,若要搜索 * ,而不是想把 * 解釋為重復先前字符任意次,可以使用 \* 來轉義。

?

通過grep 提取ip地址:

ifconfig >ipegrep "\b(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b" ip

?

?

?

總結

以上是生活随笔為你收集整理的linux grep 详细深入学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。