1. 程式人生 > >Linux學習-10月16(grep)

Linux學習-10月16(grep)

9.1 正則介紹_grep

9.2 grep中

9.3 grep下

 

一、什麼是正則

  • 正則就是一串有規律的字串,包括各種特殊符號
  • 掌握正則對於編寫shell有很大幫助
  • 各種程式設計中都有正則,原理是一樣的

 

二、grep簡介

    grep命令用來過濾字元

   用法:

  grep [-cinvrABC]  'word'  filename

  • -c:統計
  • -n:顯示行
  • -i:不區分大小寫
  • -r:遍歷所有的子目錄
  • -v:取反
  • -A:後面跟數字,過濾出符合要求的行及下面n行
  • -B:同上,過濾出符合要求的行及上面n行
  • -C:同上,過濾出符合要求的行及上下n行

    grep常用操作

  • grep -n ‘root’ passwd

       匹配‘root’並顯示行號

        

 

 

  • grep -vn 'root' passwd

        匹配非"root"行並顯示行號

 

         

  • grep -A2 'root' passwd

        匹配“root”行,並顯示以下兩行。

    

  •     grep -B2 'root' passwd

            匹配“root”行,並顯示以下兩行。

  •     grep -C2 'root' passwd

            匹配“root”行,並顯示上下兩行。

 

四、grep正則操作

  • grep '[0-9]' /etc/inittab

        匹配帶數字的行,[0-9]就是0到9的意思

        

 

  • grep -v '^#' passwd

 

        匹配以非“#”開頭的行,^表示以什麼開頭

        

  • grep '[^0-9]' test

         匹配所有非數字 ,把^符號放在[]中就是非的意思。

        

  • grep '^[^0-9]' test

        匹配所有以非數字開頭的行

 

        

 

  • grep 'r.ot' passwd

        匹配所有“rxot”的行,”"."代表任意一個字元

 

        

  • grep 'o*o' passwd

        "*"代表*左邊的字元重複0-n次,也就是一個o也會匹配,ooo....多個也會匹配

        

  • grep '.*' passwd

        ".*"表示貪婪匹配,所有的都會被匹配

     

  • grep 'o\{2\}' passwd

        {n}中指定次數,指花括號左邊字元的重複範圍

        如:grep 'o\{2\}' 會把兩個oo匹配到

        

 

 

  •  在grep中使用+ {} () | 需要時\進行脫意。不想脫意可以使用 egrep 或者 grep -E

    

  • grep -E '(oo){2}' passwd

    ()表示組合的意思。

        

 

 

  • grep 'o\+o' passwd   

        類似於*,不同的是+是1-n次,*是0-n次,如下圖單個o不會被匹配到

        

 

  • grep ‘o?t’ passwd

        ?表示左邊字元的重複次數為0或者1

    

  • grep -E 'root|test' passwd

    '|'表示或者,比如以上就是匹配‘root’或者‘test’的意思

 

    以上操作都不會修改檔案,如果想要修改可以加上-i引數即可。