正則表達式詳解?

 

正則表達式詳解

一、概述

  GREP(global search regular expression(RE) and print out the
line),是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。Unix的grep家族包括grep、egrep和fgrep。利用這些返回值就可進行一些自動化的文本處理工作。

二、語法格式

  正則表達式: grep [option] …'pattern' file….

  擴展正則表達:grep -E 'PATTERN' file….

  fgrep :fast grep ,不支持使用正則表達式

  語法格式上擴展正則表達式僅是比正則表達式多了一個參數 –E;

三、元字符集

1、字符匹配:

    . : 匹配任意單個字符

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

        [0-9] [[:digit:]]

        [a-z] [[:lower:]]

        [A-Z] [[:upper:]]

        [[:space:]] [[:punct:]] [[:alpha:]]

    [^]:取反

2、次數匹配:用于實現指定其前面的字符所能夠出現的次數

     *:任意長度,用于能夠匹配他前面的字符可以出現任意次

    \?:0次或1次,他前面的字符可有可無的

    \{m\}:m次,他前面的字符出現m次

    \{m,n}: 至少m次,至多n次

    \{m,\}:至少m次

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

    .*:任意長度的任意字符,工作于貪婪模式:盡可能的去匹配

3、位置錨定

    行首錨定:^ :要寫在模式最左側

     行尾錨定:$: 寫在模式最右側

     ^$ : 空白行 實例: grep "^$" /etc/issue | wc – l

    不包含特殊字符的連續字符組成的串叫單詞

         \<:詞首,出現在單詞左側

        \<char

        \>:詞尾, 出現于單詞右側

        \>char

        \b:詞首詞尾都行

4、分組模式

    \(\):分組中的模式匹配到的內容,可由正則表達式引擎記憶在內存中,之后可被引用;

        實例:grep "\(ro\)\{1,\}" /etc/passwd 至少出現一次

    引用:有編號:自左而右的左括號,以及與其匹配的右括號;從內向外;

        \#:引用第n個括號所匹配到的內容,而非模式本身

四、命令選項

     -v:反向選取; 如: grep –v "^$" /etc/issue

    -o:僅顯示匹配到的字串,而非字串所在的行 grep "r..t" /etc/passwd -o

    -i : ignore-case :忽略字符大小寫 Cat , cat grep -i "cat"

    -E:支持使用擴展正則表達式

    -A #: 被匹配到后面的#行 — grep -A 1 "r..t" /etc/passwd    

    -B #: 前面

    -C #:前后各一行

五、正則表達式和擴展正則表達式的字符集區別

    1、字符匹配基本一致

    2、次數匹配

        *:任意次

        ?: 0或1次

        +:至少1次

        {m}:精確匹配m次

        {m , n}: m到n次

        {m,} :至少m次

        {0,n}:最多n次

    3、錨定基本一致

    4、分組

        ()

         引用: \1,\2,\3

        或者:

         a |b :a或者b

        conC|cat : conC或者cat

        con(C|c)at : conCat或者concat

六、實例解析

    1、顯示/proc/meminfo文件中以大寫或小寫S開頭的行

        1.png

    2、顯示/etc/passwd中其默認shell為/bin/bash的用戶

        2.png

    3、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行

        3.png

    4、添加用戶,bash,testbash,basher,nologin(修改此shell為nologin)而后找出當前系統上其用戶名和默認shell相同的用戶

        4.png                此題值得好好思考一番;

    5、擴展題目:

         新建一個文本文件,

                 He like his lover.

                 He love his lover.

                 He like his liker.

                 He love his liker.

         找出其中最后一個單詞是由此前某單詞加r構成的行

        5.png

    6、找出ifconfig命令結果中1-255之間的數字

        6.png

    7、挑戰題:寫一個模式,能匹配合理的ipv4地址

        7.png

        8.png

 

原創文章,作者:wxdz_2004(古雨秋),如若轉載,請注明出處:http://www.www58058.com/4078

(0)
wxdz_2004(古雨秋)wxdz_2004(古雨秋)
上一篇 2015-05-11 11:57
下一篇 2015-05-11 12:01

相關推薦

  • 為什么新建文件時,所在文件系統還有大量剩余空間,卻提示此文件系統空間已滿??

    一:答疑解惑:    這是因為該文件所在分區的inode號被用盡,雖然分區的剩余容量還有很多。 二:基本原理:   inode為何物block又為何物?以及,inode都有哪些特征?   ①我們知道,在linux文件系統中,文件名只是計算機用來給人看,而計算機本身只識別文件所對應的數字或編號,而這個編號或數字…

    2017-07-22
  • 計算機基礎及Linux基礎入門

    一.計算機的組成及其功能一.計算機的組成及其功能? 1.組成部分: 計算器是由運算器,控制器,存儲器,輸入設備以及輸出設備五大部件組成。 2.功能: 運算器: ? ?對數據進行各種運算 存儲器: ? ?存儲程序和各種數據信息,并能在計算機運行過程中高速、自動地完成程序或數據的存取 控制器: ? ?控制器是整個計算機系統的控制中心,指揮計算機各部分協調地工作,…

    2017-09-16
  • 文件查找

        Linux上的所有資源都以文件的形式存在,如果是手工查找的話,勢必會浪費太多的時間,這里推薦倆款大家用于查找的工具。 文件查找    文件查找經常用到的倆款軟件,locate和find    二者區別 locate:1) 非實時查找;    &nbsp…

    Linux干貨 2016-08-18
  • 網絡班第27期第二周作業

    1、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關的實例演示。 cp命令:copy 文件à>目錄 文件à>文件 目錄->文件(報錯)           目錄->目錄 常用選項:     &nbsp…

    2017-07-31
  • N26_第一周作業

    計算機的組成 計算機由五大部分組成:    1.控制器(control):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等;    2.運算器(datapath):運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進行…

    Linux干貨 2016-12-28
  • DNS服務

    名字解析,DNS服務,實現主從服務器,實現子域

    2018-01-22
欧美性久久久久