Linux文本處理工具grep,egrep

簡介:

    grep即(Global search REgular expression and Print out the line)全局的搜索正則表達式并且打印顯示出來。

    通俗點講:根據用戶指定的文本模式(搜索條件)對目標文件進行逐行搜索,顯示能匹配到的行。

        

    正則表達式:

        正則表達式是一類字符所書寫的模式,其中許多字符不表示其字面意義,而是表達控制或通配等功能;

        元字符:不便是其字面意思,而用于額外功能性描述

            

    基本正則表達式的元字符:

        字符匹配:

             .:匹配任意單個字符

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

            [0-9],[[:digit:]]:任意單個數字

            [a-z],[[:lower:]]:任意單個小寫字母

            [A-Z],[[:upper:]]:任意單個大寫字母

            [[:space:]]:空白字符

            [[:punct:]]:標點符號

            [[:alpha:]]:所有大小寫字母

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

            [^]:取反

       次數匹配:

            用于實現指定其前面的字符所能出現的次數

            *:任意長度,它前面的字符可以出現任意次

            \?:出現0次或者1次,也就是說它前面的字符是可有可無的

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

            \{m,n}:至少m次,至多n次(m<n)

            \{m,\}:至少m次

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

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

        位置錨定:

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

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

            ^$:空白行

            \<:詞首錨定,出現于單詞左側

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

            \b:詞首詞尾都可以

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

        分組:

            \(\)    例如:\(ab\)*

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

        

        引用:

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

        

    擴展正則表達式:

        字符匹配:

            .:任意單個字符

            []:匹配任意字符范圍內

            [^]:匹配任意范圍外

        次數匹配:

            *:任意次

            ?:0次或1次

            +:至少1次

            {m}:精確匹配m次

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

            {m,}:至少m次

            {0,n}:至多n次

        錨定

            ^:行首

            $:行尾

            \<,\b:詞首

            \>,\b:詞尾

            ^$,^[[:space:]]*$:空行

        分組:

            ()

        引用:

            \n

        或者:

            a|b:a或b

        

    grep的用法:

        grep [option]… ‘PATTERN' FILE…

        grep的命令選項:

            -v:去反向選取

            -o:僅顯示匹配的字串本身,而非字串所在的行

            -i:ignore-case,忽略字符大小寫

         

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

            -A:顯示之前兩行

            -B:顯示之后兩行

            -C:顯示上下兩行

    egrep:egrep用法等同于grep -E


實戰操作:

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

QQ截圖20150508141815.png

QQ截圖20150508142408.png

    2.顯示/etc/passwd文件中其默認shell為非/sbin/nologin的用戶;

QQ截圖20150508143022.png

    3.顯示/etc/passwd文件中其默認shell為/bin/bash的用戶;進一步;僅顯示上述結果中ID號最大的用戶;

QQ截圖20150508143526.png

    4.找出/etc/passwd文件中的一位數或兩位數;    

        

QQ截圖20150508144148.png

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

QQ截圖20150508144445.png

    6.找出netstat -tan命令執行結果中以‘LISTEN’結尾的行;

QQ截圖20150508144731.png

    7.找出ifconfig命令結果中1-255之間的數字;         

QQ截圖20150508150110.png    8.顯示當前系統上root或git用戶的默認shell;

QQ截圖20150508152016.png

    9.使用echo命令輸出一個路徑,而后使用grep取其基名

QQ截圖20150508152710.png

原創文章,作者:水蒸氣,如若轉載,請注明出處:http://www.www58058.com/4148

(0)
水蒸氣水蒸氣
上一篇 2015-05-11 11:59
下一篇 2015-05-11 12:14

相關推薦

  • 一起學習吧:SDCC 2017即將在上海共話架構、數據和運維!

    2017活動家邀你一起學習吧!SDCC 2017在上海共話架構、數據和運維,還有兩天!【召開時間為:3月17至3月19日】 在互聯網大潮下,2017年的就業環境越發惡劣,技術人如何去適應技術變革和學習新技術,以及如何快速增強自身的技術實力成為亟需解決的問題。如果你在看完一本技術圖書后還是疑惑不解,處于目前項目遇到困難時無人請教的尷尬境地,亦不清楚業界同行在使…

    2017-03-15
  • 第二周(8.15-8.21)博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 #touch 如果a.txt不存在,生成一個新的空文檔a.txt。如果a.txt存在,那么只更改該文檔的時間信息 #ls  是list的簡寫,列出當前目錄下的所有文件名 #cp a.txt b.txt  cp是copy的簡寫,用來復制文件。在工作目錄下,將a.t…

    Linux干貨 2016-08-24
  • 搜索引擎-處理查詢

     我們從用戶的角度來看,用戶不關心什么索引結構是倒排還是簽名文件,也不需要知道相關排序算法。用戶提交了查詢,就需要獲取滿意的搜索結果。這個搜索結果就是搜索引擎是否提供有效的服務。 1.查詢流程 查詢流程圖: 1)用戶提交查詢 2)分析查詢      查詢預處理:    …

    Linux干貨 2015-12-10
  • RAID( Blob3 )

    RAID各級別特性及使用

    2017-11-27
  • 一切皆文件——Linux基本命令(1)

    1.一切皆文件 在dev下有很多硬件的文件 sr0是光驅 console是終端,也劃為一個文件   2.查看終端   3.兩個終端發信 首先右鍵選擇Clone Session,新客隆了一個centos6 分別使用tty命令查看終端名。 分別為0和1 通過命令:echo “想發送的信息“ > 終端名 即可發送 在0中輸入命令: 在1中…

    Linux干貨 2017-07-13
  • Linux命令之:setfacl和getfacl

    命令總結之:setfacl和getfacl acl:access control list,實現靈活的權限管理 除了文件的所有者,所屬組合其他人,可以對更多的用戶設置權限 acl生效順序:所有者、自定義用戶、自定義組、其他人 1、首先我們查看man幫助文檔說明 [root@centos7 sixijie]# man setfac…

    Linux干貨 2016-08-04
欧美性久久久久