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 01:00
下一篇 2016-12-23 01:17

相關推薦

  • keepalived高可用haproxy配合varnish實現wordpress的動靜分離

    haproxy和nginx都可以作為七層和四層反代服務器對外提供服務,此文通過haproxy和keealived配置varnish搭建wordpress的動靜分離站點 一、實驗環境 五臺虛擬機: haproxy-1:搭建haproxy和keepalived服務,ip地址:192.168.11.176 haproxy-2:搭建haproxy和keepalive…

    2017-07-03
  • Nginx作為web服務器的使用配置

    概述     Nginx是一款免費開源的web服務器,同時也可以作為http、imap/pop3協議進行反代服務器,本篇介紹一些nginx作為web服務器方面的相關配置,具體包含:     1、nginx基礎概念介紹     2、nginx…

    Linux干貨 2016-10-27
  • 重定向與管道

         本次內容    1.三種I/O設備    2.把I/O從定向入文件    3.命令tr    4.使用管道鏈接命令    5.tee   我們都知道程序是由:指令+數據    &n…

    2017-07-23
  • 重要開源協議解析(BSD,Apache,GPL,LGPL) 整理

    現今存在的開源協議很多,而經過Open Source Initiative組織通過批準的開源協議詳見其網站(http://www.opensource.org/licenses/alphabetical)。我們在常見的開源協議如BSD, GPL, LGPL等都是OSI批準的協議。如果要開源自己的代碼,最好也是選擇這些被批準的開源協議。 這里整理了四種最常用的…

    Linux干貨 2016-07-22
  • 軟件包管理

    軟件運行環境 ABI(應用程序的二進制接口):Application Binary Interface Windows 與Linux 不兼容 ELF(Executable and Linkable Format)           —&…

    Linux干貨 2017-04-23
欧美性久久久久