grep與基本正則表達式基本用法

正則表達式:Regual Expression  REGEXP

     由一類特殊字符及文本字符所編寫的模式,其中有些字符不表示其字母意義,而是用于表示控制或通配的功能;

      分兩類:

              基本正則表達式:BRE

              擴展正則表達式:ERE

 元字符:\(hello[[:space:]]\+\)+

  grep:Global search Regular expression and print out the line.

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

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

        正則表達式引擎:

       grep [OPTIONS] PATTERN [FILE…]

        grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]

                OPTIONS:

                    —color=auto:對匹配到的文本著色后高亮顯示;

                   -i: ignorecase. 忽略字符的大小寫;

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

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

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

                    -q   –quiet, –silent: 靜默模式,即不輸出任何信息;

  -A #:   after,后#行

  -B#:    before,前#行

  -C#:    context, 前后各#行

基本正則表達式元字符:

        字符匹配:

   . :  匹配任意單個字符

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

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

       [:digit:]所有 數字   [:lower]所有的小寫字母

      [:upper:]所有的大寫字母,[:alpha:]所有的字母。[:alnum:]包含數字的字母

[:punct:]所有標點符號的   [:space:]所有空白符號的

 匹配次數:用在要指定其出現的次數的字符的后面,用于限制其前面字符出現的次數;默認工作與貪婪模式;

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

例如: grep"x*y"

             abxy

             aby

              xxxxy     yab   都匹配  

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

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

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

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

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

\{o,n}:  至多n次

\{m,\}:  至少m次

位置錨定:

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

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

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

  ^$:空白行;

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

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

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

\>或\b:  詞尾錨定,用于單詞模式的右側;

\<PATTERN\>:  匹配完整單詞;

分組及引用:

練習:

1、顯示/etc/passwd文件中不以/bin/bash結尾的行;

    ~]# grep -v/bin/bas$" /etc/passwd

,找出/etcpasswd文件中兩位數或三位數

~]# grep "\<[0-9]\{2,3}\>" /etc/passwd

3、找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg文件中,以至少一個空白字符開頭,且后面非空白字符的行,

  ~]# grep "^[[:space:]]\+[^[:space:]]*$" /etc/grub2/cfg

4、找出“netstat -tan"命令的結果中以”LISTEN"后跟0、1或多個空白字符結尾的行;

 ~]# nestat -tan | grep "LISTEN[[:space:]]*$"


分組及引用

    xy*ab

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

   \(xy\)*ab

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

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

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

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

。。。。。

  括號不能交叉,可以嵌套

     He loves his lover.

     He likes his liver.

      She likes her liker.

      She loves her liker.

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

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

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

(0)
shadowshadow
上一篇 2016-11-03 00:20
下一篇 2016-11-03 12:01

相關推薦

  • bash腳本之練習

    1、編寫服務腳本/root/bin/testsrv.sh,完成如下要求  (1) 腳本可接受參數:start, stop, restart, status  (2) 如果參數非此四者之一,提示使用格式后報錯退出 (3) 如是start:則創建/var/lock/subsys/SCRIPTNAME, 并顯示“啟動成功” 考慮:如果事先已經啟…

    Linux干貨 2016-08-24
  • DNS搭建實例

      環境介紹 系統版本:CentOS 7.2 程序包:bind(提供的dns server程序、已經幾個常用的測試程序)、bind-utils(bind客戶端程序集,例如dig,host,nslookup等) 緩存名稱服務器的配置: 1、安裝程序包     ~]# yum install&…

    Linux干貨 2017-02-15
  • 編譯安裝Linux內核

    實驗前準備:在https://www.kernel.org/下載內核 這里我們下載的是:linux-4.14.10.tar.xz du -sh /app/linux.tar/ 此命令可查看內核文件大小 編譯完成后/lib/modules下會生成4.14.10版的內核 1,tar xvf linux-4.14.10.tar.xz -C /app/解壓縮準備好的…

    2018-01-03
  • 運維工程師技能需求排行

    這是我今天在拉勾網搜索運維,翻完了4四頁也招聘信息之后得到的,我的目的是想要看看之后的學習,哪個更應該成為重點,有些在我意料之中,有些還真的沒想到,算是努力了一個小時的收獲吧,分享給大家。
    注意:其中的看法僅代表個人觀點,很多都是依靠我自己的學習經驗和工作經驗累積的

    Linux干貨 2017-12-12
  • 交換分區管理

    創建交換分區 linux上的交換分區必須使用獨立的文件系統且文件系統的systemid必須為82mkswap [options] device [size] 創建交換分區文件系統 掛載交換分區     swapon 設備名稱 處理交換文件和分區     交換分區是系統RAM的補充  &nb…

    Linux干貨 2016-09-02
  • awk中pipe的shell命令調用與close()

        某公司其員工到勤時間表如下, 取名為 arr.dat, 文件中第一欄為員工代號, 第二欄為到達時間. 本示例中將使用該文件為數據示例文件, 1034 7:26 1025 7:27 1101 7:32 1006 7:45 1012 7:46 1028 7:49 1051 7:51 1029 7:57 1042 7…

    Linux干貨 2016-11-11

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-10 19:55

    總結的不錯~能擴充點會更好~繼續加油~

欧美性久久久久