grep基本正則表達式以及擴展正則表達式

基本正則表達式:

grep:Globel serach REgular expression and print out the line

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

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

grep選項:

          -l:lgnorecase,忽略字符的大小寫;

          -o:僅顯示匹配到的字符串本身;

          -v: –invert-match:顯示不能被模式匹配到額行;

          -E:支持使用擴展的正則表達式元字符;

          -q:–quit,–slient:靜默,不輸出任何信息

          -A#:after:匹配本行及后#行

          -B#:before:匹配本行和前#行

          -C#:context,本行和前后各#行

基本正則表達式元字符:

          字符匹配:

               .:匹配任意單個字符        grep "r..t" /etc/passwd

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

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

                       [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]

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

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

                    如: grep "x*y"

                                abxy

                                 aby

                                 xxxxxy

                                 yab

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

                     \?:匹配其前面的字符0次或1次;即前面的字符是可有可無的;

                     \+:匹配其前面的字符1次或多次;即前面的字符要出現至少1次;

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

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

                             \{0,n\}:至多n次

                              \{m,\}:至少m次

           位置錨定:

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

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

                       ^PATTERN$:用于PATTERN來匹配整行

                            ^$:空白行;

                           ^[[:space:]]*$:空行或包含空白字符的行;

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

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

                    

            分組及引用:

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

               \(xy\)ab:將xy當做一個整體進行匹配

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

           如:

              \1 :模式從左側起,第一個左括號以及與之匹配的右括號之間的模式所匹配到的字符

              \2:模式從左側起,第二個左括號以及與之匹配的右括號之間的模式所匹配到的字符

              \3:

相當于:(a+b-c)*d)

             如:lovers.txt

                       he loves hist lover

                       he likes his lover

                       she liker her liker

                       she loves her liker

        ~]#grep "\(l..e).*\1" lovers.txt

    后向引用:引用前面的分組括號中的模式所匹配到的字符:


擴展正則表達式:

 egrep:

            支持擴展的正則表達式實現類似于grep文本過濾功能;grep -E

             egrep [options] patern [file..]

                      選項:

                              -i,-o,-q,-A,-B,-C

                              -G:支持基本正則表達式

擴展正則表達式的元字符:

                   字符匹配:

                            .:任意單個字符

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

                          [^]:指定范圍外的任意單個字符

                   次數匹配:

                          *:任意次,0,1或多次;

                          ?:0次或1次,其前的字符是可有可無的;

                          +:其前字符至少1次

                         {m}:其前的字符m次

                        {m.n}:至少m次,至多n次;

                                     {0,n} 

                                     {m,}

                    位置錨定:

                           ^:行首錨定;

                           $:行尾錨定;

                         \<,\b:詞尾錨定;

                         >\,\b:詞尾錨定

                    分組及引用:

                              ():分組;括號內的模式匹配的字符會被記錄于正則表達式引擎的內部變量中

                          后向引用:\1,\2,…

                             或

                                  a|b:a或者b

                                 C|cat:C或cat

                                (c|C)at:cat或Cat

原創文章,作者:因為有你,如若轉載,請注明出處:http://www.www58058.com/31525

(1)
因為有你因為有你
上一篇 2016-08-08 16:17
下一篇 2016-08-08 20:10

相關推薦

  • 22期+第一周課堂練習

    一.計算機的組成及其功能 計算機的組成及其功能結構圖      各部件的關系圖          二.按系列羅列Linux的發行版,并描述不同版本之間的聯系與區別 1.各版本邏輯結構圖 2.各版本的介紹   Redhat,應該稱為Redhat系列,包括RHEL(Redh…

    Linux干貨 2016-08-15
  • 課后習題3–正則表達式

    1、查出分區空間使用率的最大百分比值 [root@centos7 ~]# df | grep "^/dev" | grep -v "cdrom$" | tr ' '&nb…

    Linux干貨 2016-08-07
  • ?文件系統層級結構標準

    多數Linux發行版遵從FHS標準并且聲明其自身政策以維護FHS的要求。 [1] [2] [3] [4] 然而,包括由自由標準小組成員在內開發的絕大多數發行版(截至2009年),并不完全執行建議的標準。
    當FHS創建之時,其他的UNIX和類Unix操作系統已經有了自己的標準,尤其是hier(7)文件系統布局描述。 自從第七版Unix(于1979年)發布以來已經存在,或是SunOS filesystem(7), [5] 和之后的Solaris filesystem(5)。 例如,Mac OS X使用如 /Library、 /Applications和/Users 等長名與傳統UNIX目錄層次保持一致。
    現在的Linux發行版包含一個/sys目錄作為虛擬文件系統(sysfs,類似于 /proc,一個procfs),它存儲且允許修改連接到系統的設備,然而許多傳統UNIX和類Unix操作系統使用/sys作為內核代碼樹的符號鏈接。
    一些Linux系統如GoboLinux和Syllable Server使用了和FHS完全不同的文件系統層次組織方法。

    Linux干貨 2016-10-17
  • systemd及awk

    1、簡述systemd的新特性及unit常見類型分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理
    2、描述awk命令用法及示例(至少3例)
    3、描述awk函數示例(至少3例)

    Linux干貨 2018-01-17
  • 馬哥教育網絡班21期-第三周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 who|cut -d" " -f1|uniq -c|awk '{print $2}' 2、取出最后登錄到當前系統的用戶的相關信息。 last |awk 'NR==1{print $0}' last |sed -n &…

    Linux干貨 2016-07-29
  • 第三周作業

    第三周作業

    Linux干貨 2017-12-19
欧美性久久久久