正則表達式文本過濾


grep文本過濾

 1.grep 默認是按照以行為基本單位進行匹配和顯示的。

 2.grep默認匹配只要包含模式字符即可

    grep -w 是按單詞匹配,和普通的匹配不一致

    單詞的分隔符, 數字加字母加下划線都算做單詞的一部分

 

 

grep   -f   p.txt    /etc/passwd

 

匹配顯示結果的行號

 

 

 grep 並且關系和 或者關系

  1.並且        grep     root       /etc/passwd   |   grep shutdown

  2.或者        grep     -e  root  -e  shutdown     /etc/passwd       

    

正則表達式

1.字符匹配

     .  表示一個任意字符  .放在[]里面就表示.本身這個字符

2.匹配次數

        某一個字符出現的次數

      *  表示*號前面的字符出現的次數是不確定的

3.位置錨定

   行首   ^         不能匹配中間某段字符串的開始

   行尾   $        不能匹配中間某一段字符串的結尾

  單詞詞首      \<root     root處於單詞的最左側 

  單詞詞尾       root\>    root處於單詞的最右側

4.分組

    1. echo wangwangwangggww | grep "\(wang\)\{3\}"

    2.后向引用

      

正則表達式和通配符的區別

 正則表達式匹配的是文件的內容或者標准輸出的字符串,通配符匹配的是文件的名稱.兩者操作的對象不一致.

匹配字符串問題

 shell執行命令的時候,正則表達式是以整個輸出作為字符串內容,包括看不到的空格符號。

 有些命令結果會輸出一個或者多個空格,有些命令不會輸出空格.

 

  1.在表達式中()符號前面和{}括號前面都必須要加上\(\) 和 \{\}.

     grep "^\(.*\):.*\1$" /etc/passwd

  2.正則表達式默認從字符串的最前面開始查找,但是如果錨定的是行尾,那么正則會從尾部開始查找

    1.從尾部開始查找

   

   2.從頭部開始查找

   

 

   3.分組實例

    

   

      第一分組匹配到的字符串是7,最后面的[0-9]*\1 表示匹配到以7結尾而且7前面可以包含任意個數字的數字

    

 

 基本正則和擴展正則的區別

  1.基本正則語法  小括號和大括號前面需要加上\符號做轉義

       grep  -w   "[0-9]\{2,3\}"    /etc/passwd

  2.擴展正則       小括號和大括號前面不要加上轉義字符

      grep -Ew      "[0-9]{2,3}"     /etc/passwd

      egrep -w      "[0-9]{2,3}"     /etc/passwd

   

  

  

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM