正則表達式基礎以及grep的簡單使用

正則表達式基礎以及grep的簡單使用

 

1,定義

正則表達式是你所定義的模式模板,Linux可以用它來過濾文本。Linux工具(比如grep、sed、gawk)能夠在處理數據時使用正則表達式對數據進行模式匹配。如果數據匹配模式,它就會被接受并進一步處理;如果數據不匹配,它就會被濾掉。

正則表達式基礎以及grep的簡單使用

2,正則表達式的原則

(1)正則表達式模式都區分大小寫。(2)可以使用空格,數字。(3)空格和其他字符并沒有什么區別。

3,特殊字符                                                                  

包括        * [  ] ^ $ ( ) \ + ? | { }   

       要使用特殊字符,必須轉義,在轉義字符時,需要在它前面加個特殊字符來告訴正則表達式引擎應該將接下來的字符當做普通的文本字符,這個特殊符號就是反斜線(\)。

4,錨字符                                                                   

        ^ 行首錨定

        $ 行尾錨定

正則表達式基礎以及grep的簡單使用

       \b  \b 匹配詞首和詞尾  

        \<     \> 匹配詞首和詞尾    

正則表達式基礎以及grep的簡單使用

5,grep 基本用法

       -v    取反,找出不包含關鍵字的行

       -i     忽略字符大小寫

       -n    顯示匹配的行號

       -c    統計匹配到的行數

       -o    僅顯示匹配到的字符串

       -w   匹配整個單詞

       -A   n匹配的前n行

       -B    n 關鍵字的后n行

       -C    n 關鍵字的前后各n行

正則表達式基礎以及grep的簡單使用

       -e    實現多個選項的邏輯或關系

正則表達式基礎以及grep的簡單使用

       -E     egrep   支持擴展的正則表達式

         -F     fgrep   不支持正則表達式

6,字符匹配規則

       .             配任意單個字符

       [abc]       匹配a,b,c中單個字符

       [^abc]     匹配除a,b,c之外的字符

       [:alnum:] 匹配數字和字符

       [:alpha:]  匹配英文大小寫字母a-z,A-Z

       [:lower:]  匹配小寫字母

       [:upper:]  匹配大寫字母

       [:space:]  匹配空格

       [:digit:]   匹配十進制數字

7,匹配次數

       *     匹配前面的字符任意次數,0至正無窮

       .*    匹配任意字符任意次數

       \?     匹配前面字符0次或者1次

       \+    匹配前面字符至少1次

       \{n\}       配前面字符n次

       \{m,n\}   匹配前面字符出現m至n次

       \{,n\}      匹配前面字符最多出現n次

       \{n,\}      匹配前面字符至少n次

8,擴展正則表達式egrep  

 次數匹配,和基本正則表達式類似,就是少了轉義字符(\)

*     匹配前面字符任意次

?    匹配前面字符0次或1次

+     匹配前面字符1次或多次

{m} 匹配前面字符m 次

{m,n}匹配前面字符m到n 次

9,使用管道(|

         管道允許你在檢查數據時,用邏輯或方式指定正則表達式引擎要用的兩個或者多個模式,如果任何一個模式匹配了數據文本,文本就通過,如果沒有模式匹配,則數據流文本匹配失敗。

正則表達式基礎以及grep的簡單使用

10,分組

 將匹配規則分成不同的組 使用 1 2 3..等數字去標識,便于后面使用同樣規則的時候可以直接飲用

   \(root\)\+\1

   \(string1\+\(string2\)*\)

   \1  string1\+\(string2\)*

   \2  string2

eg.找出/etc/passwd用戶名同shell名的行

   cat /etc/passwd | grep
“^\(\b[[:alnum:]]\+\b\):.*\1$”

   grep
“^\<\(.*\)\>.*\1$” /etc/passwd

cat /etc/passwd | egrep “^(\b[[:alnum:]]+\b):.*\1$”

正則表達式基礎以及grep的簡單使用

原創文章,作者:linux is not unix,如若轉載,請注明出處:http://www.www58058.com/72968

(1)
linux is not unixlinux is not unix
上一篇 2017-04-09
下一篇 2017-04-09

相關推薦

  • N_28正則表達式及vim編輯的一些知識

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 ]# who | sort -nu | cut -d” ” -f1 2、取出最后登錄到當前系統的用戶的相關信息。 ]# who | tail -1 | cut -d” ” -f1 | id 3、取出當前系統上被用戶當作其…

    Linux干貨 2017-12-16
  • 永遠不要讓自己停下

    曾幾何時,我還是剛出象牙塔的小男孩。想想現在,經過4年的洗禮,我不再是小男孩了。可是,我卻發現自己變得越來越懶,守著那丁點的知識。 我早已坐吃山空而不自知,早已落后于時代的趨勢而不自知。時代需要一個勤奮而專注的我,需要一個不懈怠的我。 如果,我不繼續前進,等待我的只有墮落。逆水行舟不進則退,不逼自己一把,永遠不知道自己的潛力有多大。 我希望說,再見,懈怠而懶…

    Linux干貨 2016-10-07
  • rpm 程序包管理器的基本使用

    目錄 安裝程序包 卸載 升級 查詢 校驗 來源合法性和完整性驗證 數據庫重建 1     安裝程序包 rpm -ivh /path/to/package_file -v     顯示執行過程的參數。 -h   &nbsp…

    Linux干貨 2016-06-22
  • LInux基本常識和幾個基本命令的用法

    1.默認系統管理員root 1)在Linux中,創建系統的同時,會創建一個超級用戶,對系統擁有絕對權限。 2)每個賬戶的文件都被放在各自的家目錄中,管理員家目錄:/root 3)每個帳號會有一個uid號對應,管理員uid=0   cengOS7之前的版本一般用戶uid從500開始   centOS7之后的版本一般用戶uid從1000開始 …

    Linux干貨 2016-07-23
  • 3、常用命令介紹

    http://note.youdao.com/yws/public/redirect/share?id=4840e26ee1d2b2c928b6c26e2ba14661&type=false

    Linux干貨 2016-08-08
  • 文件屬性、文件管理命令及glob 博客作業—-21期網絡班第二周

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。    cp  mv  rm      命令格式:      cp [options] … SOURCE DEST    …

    Linux干貨 2016-07-16
欧美性久久久久