grep與文本處理工具

grep:基本正則表達式,-E  -F

egrep:擴展正則表達式,-G -F

fgrep: 不支持正則表達式,-F 

egrep:

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

         egrep [OPTIONS] PATTERN [FILE….]

        -l, -o, -v, -q, -A, -B, -C

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

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

           字符匹配:

          . :任意單個字符

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

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

次數匹配:

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

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

        + :其前字符至少1次;

       {m}: 其前的字符m次;

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

               {0,n}

               {m,}

    位置錨定

           ^:行首錨定;

           $:行尾錨定

           \>,\b: 詞尾錨定;

      分組及引用:

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

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

     或:

           a|b: a或b :

           C|cat: C或cat

           (c|C)at: cat或Cat

練習:1、找出/proc/meminfo文件中,所有在大寫或小寫S開頭的行;至少有三種實現方式:

    ~]# grep -i "^s" /proc/meminfo

    ~]# grep  "^[sS]" /proc/meminfo

    ~]# grep  -E "^(s|S)" /proc/meminfo

2、顯示當前系統上root、centos或user1用戶的相關信息;

    ~]# grep -E"^(root|centos|user1)\>" /etc/passwd

3、找出/etc/rc.d/init.d/functions文件中某些單詞后面跟一個小括號的行;

     ~]# grep -E -o "[_[:alnum:]]+\(\)" /etc/passwd 

4、使用echo命令輸出一絕對路徑,使用egrep取出基名;

       ~]#  echo /etc/sysconfig/ |grep -E-o "[^/]+/?$"

5、找出ifconfig命令結果中的1-255之間的數值;

       ~]# ifconfig | grep -E -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"

6、課外作業:找出Ifconfig命令結果中的IP地址;

7、添加用戶bash,testbash,basher 以及nologin(其shell為/sbin/nologin/;而后找出/etc/passed文件中用戶名同shell的行;

        ~]# grep -E  "^([^:]+\).*\1$" /etc/passwd

fgrep :不支持正則表達式元字符;

         當無需要用到元字符取編寫模式是,使用fgrep 必能更好;

文本查看僅處理工具:wc,  cut , sort,  unig, diff, patch

       wc: word count

       wc:[OPTION]…[FILE]…

        -l:lines

        -w:words

        -c: bytes

cut:

     cut OPTION…[FILE]…

            OPTION:

             -d CHAR:以指定的字符為分隔符

             -f FIELDS: 挑選出的字段;

              #:指定的單個字段

              ##:連續的多個字段;

              #‘#:離散的多個字段;

sort:

       sort [OPTION]…[FILE]…

               -n 基于數值大小而非字符進行排序;

               -t CHAR; 指定分隔符:

              -k#: 用于排序比較的字段;

              -r :逆序排序;

              -f: 忽略字符大小寫

              -u:  重復的行只保留一份;

                     重復行  

uniq:

        report or omit repeated lines報告或移除重復的行

        uniq [OPTION]…[INPUT [OUTPUT]]

              -c: 統計每一行重復出現的次數

              -u:僅顯示未重復非行

              -d:僅顯示重復過的行;

diff: compare files line by line 逐行比較文件中的內容

         diff [OPTION]…FILES 

         diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE> /PATH/TO/PATCH_FILE

           -U:使用unfied機制,即顯示要修改的行的上下文,默認為3行;

patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_ILE

l練習:取出ifconfig eno16777736命令結果中的ip地址;

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

(0)
shadowshadow
上一篇 2016-12-23
下一篇 2016-12-23

相關推薦

  • Linux基礎之sed流編輯器詳解

    之前介紹了三大文本編輯器的grep,這里介紹比grep功能更強的sed流編輯器 sed是什么? sed是Stream EDitor的縮寫,man中對sed的簡介為 sed – stream editor for filtering and transforming text 它的主要功能是對文本的過濾與替換。 sed的工作原理 sed的工作過程:…

    Linux干貨 2016-08-15
  • 系統基礎之權限管理

    權限管理: 概論:  上節,為大家介紹了用戶,和組的知識.今天為大家介紹與用戶,組息息相關的知識,權限.linux是多用戶,多任務的操作系統,面對多人的操作,安全問題就很重要,權限機制就很好的對安全進行防護,避免他人操作自己的文件.下面給大家詳細介紹權限.   首先讓我們先直觀地看下權限,對權限有個最基本的認識.以/etc/issue文件…

    Linux干貨 2016-08-04
  • N23-第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 [root@localhost ~]# last -1 | head -1 3、取出當前系統上被用戶當…

    Linux干貨 2016-12-05
  • 馬哥教育網絡班21期+第5周課程練習

    1.顯示/boot/grub/grub.conf中至少以一個空白字符開頭的行 [root@itop ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf 2.顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面至少一個空白字符,而后又有至少一個非空…

    Linux干貨 2016-08-08
  • 第六周作業

    博客具體內容請移步博客園:http://www.cnblogs.com/wangenzhi/p/6295141.html

    Linux干貨 2017-01-17
  • Nginx七層反代服務器 (Blog 20)

    http反代、fastcgi反代

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