正則表達式以及Linux文本搜索工具grep

一正則表達式

regual Expression  簡稱REGEXP

定義:由一類特殊字符以及文本字所編寫的模式,其中有些字符不表示其字面意義,而用于統配和統配功能


分類:

    基本正則表達式:BRE 貪婪模式(盡可能長地去匹配符合模式的內容

    擴展表達式:ERE

BREERE區別:元字符不同

 基本正則表達式元字符

   字符匹配、次數匹配、位置錨定、分組及引用

   一、字符匹配

       .:匹配任意單個字符

       []:匹配指定的范圍內的任意單個字符

        [^]:匹配指定外的任意單個字符

    \d:匹配數字

     \s:匹配空格

     \w:匹配任意字母數字下劃線或漢字

    

[:digit:] :0-9

[:alpha:]所有的大小寫

[:upper:]:所有大寫字母

[:lower:]:所有小寫字母

[:alnum:]:所有字母和數字

[:punct:]:所有的標點符號

[:space:]:空格和tab

二、匹配次數:用在要指定其出現的次數的字符的后面,用于限制其前面字符出現的次數

*:匹配其前面的字符任意次;0,1,多次;

 .*:任意長度的任意字符

 \?:匹配前面的字符01

 \+:匹配前面的字符至少1

 \{m\}:匹配前面字符m

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

 

  三、位置鎖定

      ^:行首錨定 ;用于模式的最左側

     $:行尾錨定;用于模式的最右側

          ^Pattern$:用于pattern來匹配某行

          ^$;空白行

          單詞:非特殊字符組成的連續字符都稱為單詞

          \<\b:詞首錨定,用于模式的最左側

       \> \b:詞尾錨定,用戶模式的最右側

 

 四、分組及引用(后向引用)(重點理解)

    分組符號\(\):將一個或多個字符捆綁在一起,當一個整體進行處理

    分組意義:分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄到內存的變量中

    引用這些變量:\1:模式從左起,第一個左括號以及與之匹配的右括號之間的模式所匹配到的字符。

 擴展的正則表達式

擴展正則表達式元字符

 字符匹配

   .:匹配任意單個字符

    []:匹配指定的范圍內的任意單個字符

    [^]:匹配指定外的任意單個字符

[:digit:] :0-9

[:alpha:]所有的大小寫

[:upper:]

[:lower:]

[:alnum:]

[:punct:]

[:space:]意義和正規表達式意義相同

 

次數匹配

  *:匹配其前面的字符任意次;0,1,多次;

    .*:任意長度的任意字符,不包含換行符號

    ?:匹配前面的字符01

 +:匹配前面的字符至少1

 {m}:匹配前面字符m

{n,m}:匹配前面字符至少m次,至多n

 

位置錨定

    ^:行首錨定 ;用于模式的最左側

    $:行尾錨定;用于模式的最右側

    \<\b:詞首錨定,用于模式的最左側

    \> \b:詞尾錨定,用戶模式的最右側

分組及引用

      分組符號()

        a|b :ab

        c|cat :Ccat

        (c|C):cat Cat

二正則表達式之應用一:grep

grep定義:

作用:文本搜索工具,根據用戶指定的“模式(過濾條件)”對目標文本逐行進行匹配檢查;打印匹配到的行

 模式:由正則表達式的元字符及文本字符做編寫的過濾條件

全拼:Global search regular  experssion an print out the line

grep egrep fgrep:區別及之間轉換

grep:支持正規的正則表達式 ;grep -E=egrep  grep -F=fgrep

egrep:支持擴展正則表達式    ;egrep -G=grep

fgrep:不支持正規表達式

用法

grep [OPTINONS]  PATTER  FILE ()

    選項

–color=auto 自動為匹配的字符著色

 

-i ignorecase 忽略字符大小寫

-o:只顯示字符串的本身

-v–inver –match顯示不被模式匹配的行

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

-F 支持匹配的字符串

-q 安靜模式既不輸出任何信息

-A 數字n:顯示搜索匹配到的前n行也顯示

-B 數字n:顯示搜索匹配到的后n行也顯示

-C 數字n:前后n行都顯示

-w :以單詞進行搜索

-n 顯示匹配的行號

-c統計匹配的行數

   – e:實現多個選項間的邏輯or關系grep –e ‘cat ’ – e ‘dog’ file

 

grep 結合正則表達式的實例引用:

實例一:搜索文件中含有root的用戶并且不區分大小寫,并且只將匹配的字符打印出來

        31.png

實例二:顯示含有root單詞或者hello單詞的行

        32.png

實例三:-q模式不將結果顯示到屏幕上(一般用于腳本的編寫)

35.png

實例四:grep 結合正則表達式使用,顯示出含有"rt 、rot或者roo….(任意個o)t的行并顯示行號36.png

實例五:分組應用 添加用戶 bash、 testbash、 basher以及nologin(其shell為/sbin/nologin),而后找出 /etc/passwd文件中用戶名同shell名的行

37.png

更多實例詳見:

20160804課后作業



原創文章,作者:wangnannan,如若轉載,請注明出處:http://www.www58058.com/30069

(0)
wangnannanwangnannan
上一篇 2016-08-07
下一篇 2016-08-07

相關推薦

  • find命令總結

    用途:     find命令用來在文件層級結構中搜索跟條件匹配的文件 語法:     find [OPTIONS] [查找起始路徑] [查找條件] [處理動作]     查找起始路徑:指定具體搜索起始路徑。默認為當前目錄  &nb…

    Linux干貨 2016-09-19
  • linux網絡命令與軟件管理

    1、描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景和區別 網橋也叫橋接器,是連接兩個局域網的一種存儲/轉發設備,用來連接不同網段。 集線器稱為“Hub”,主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。 二層交換機工作于OSI模型的第2層(數據鏈路層),可識別數據包中的MAC地址信息,…

    Linux干貨 2016-12-18
  • 行編輯器sed的應用

    sed sed:Stream EDitor,行編輯器 sed是一種流編輯器,它一次處理一行內容,處理時,把當前處理的行存儲在臨時緩沖區中, 稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后, 把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒 有改變,除非你使用重定向存儲輸出。 se…

    Linux干貨 2016-08-10
  • Linux 進程及作業管理

    Linux 進程及作業管理 概述:      我們在實際的運維工作中經常要對服務器做各種監控,以了解其相關狀態,比如,CPU利用率,磁盤空間利用率,等等,這就需要我們了解相關的數據并學會使用各種工具來分析數據。本章就將總結Linux系統中進程管理和作業管理的相關命令、參數和工具,包括:進程的相關定義、分類、狀態以及進程查看和管理…

    Linux干貨 2016-09-11
  • 根分區伸縮實驗

    眾所周知LVM是Linux環境下對 磁盤進行管理的一種機制。用戶在安裝Linux操作系統時,難以分配合適的硬盤空間,當一個分區存放不下某個文件時,這個文件因為文件系統的限制,也不能 跨越多個分區來存放。而遇到出現某個分區耗盡時,只有使用調整分區大小的工具。隨著LVM功能的出現,這些問題都迎刃而解,用戶在無需停機的情況下可以方 便…

    Linux干貨 2015-05-27
  • 網絡服務之Nginx

      在之前一篇博客中我們講述了httpd網絡服務器,那么httpd是個非常穩定安全的一個服務器,這次我們介紹一個新的網絡服務器—-nginx。   Nginx 是俄羅斯人編寫的十分輕量級的 HTTP 服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器(我們主要圍繞這兩…

    2017-06-07
欧美性久久久久