文本處理工具 grep

文件查看:

      文件查看命令:cat,tac,rev

              cat [OPTION]… [FILE]…

               -E: 顯示行結束符$

               -n: 對顯示出的每一行進行編號

               -A :顯示所有控制符,相當于-vET

               -b:非空行編號,就是說空行的不給編號

               -s :壓縮連續的空行成一行

         

blob.png

分頁查看文件內容:

    more: 分頁查看文件

         more [OPTIONS…] FILE…

         -d: 顯示翻頁及退出提示

        只能向下翻頁

    less :一頁一頁地查看文件或STDIN 輸出,比more功能更全面

        查看時有用的命令包括:

           /文本搜索 文本

           n/N跳到下一個 or 上一個匹配

          less 命令是man命令使用的分頁器

顯示文本前或后行內容:

         head [OPTION]… [FILE]…  默認顯示前十行

               -c #: 指定獲取前# 字節

               -n #: 指定獲取前#行

                -#:指定行數

     

blob.png

        tail [OPTION]… [FILE]…    默認顯示后十行

              -c #: 指定獲取后#字節

              -n #: 指定獲取后#行

    

blob.png

              -#:指定行數

              -f: 跟蹤顯示文件新追加的內容

     命令:tail -n3 -f /var/log/messages  自動監控更新信息

     

blob.png

按列抽取文本cut:

     cut [OPTION]… [FILE]…

          -d DELIMITER: 指明分隔符,默認tab

          -f FILEDS:

          #: 第# 個字段

          #,#[,#] :離散的多個字段,例如1,3,6

          #-# :連續的多個字段, 例如1-6

          混合使用:1-3,7

           

blob.png

         -c 按字符切割

blob.png

         –output-delimiter=STRING 指定輸出分隔符

blob.png

      paste 合并兩個文件同行號的列到一行

           paste [OPTION]… [FILE]…

              -d 分隔符: 指定分隔符,默認用TAB


blob.png

              -s : 所有行合成一行顯示

blob.png

                     同一個文件內容在同一行顯示

收集文本統計數據wc:

       計數單詞總數、行總數、字節總數和字符總數


blob.png

                3(行總數),3(單詞總數),36(字節數)

        使用 -l 來只計數行數

        使用 -w 來只計數單詞總數

        使用 -c 來只計數字節總數

        使用 -m 來只計數字符總數

blob.png

文本排序sort:

 把整理過的文本顯示在STDOUT ,不改變原始文件    $ sort [options] file(s)

   默認按照字母順序排序

      常用選項:

          -r 執行反方向(由上至下)整理

          -n 執行按數字大小整理

          -t c 選項使用c 做為字段界定符

          -k X 選項按照使用c 字符分隔的X

按照數字反向順序對第3列排序整理:

    

blob.png

          -f 選項忽略(fold )字符串中的字符大小寫

          -u 選項(獨特,unique )刪除輸出中的重復行

                  例:

blob.png

             圖為忽略you的大小寫,刪除重復的行,按照默認字母順序排序


   uniq 命令:從輸入中刪除重復的前后相接的行

      uniq [OPTION]… [FILE]…

      -c: 顯示每行重復出現的次數;

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

      -u: 僅顯示不曾重復的行;連續且完全相同方為重復

     常和sort 命令一起配合使用:sort userlist.txt | uniq -c

比較文件:

           命令:diff  ____   ____

blob.png

diff命令的輸出被保存在一種叫做“補丁”的文件里

       使用-u選項輸出diff格式文件,適合用于補丁文件

       例:  diff -u f3 f33 > diff.log    然后刪除f33文件  然后patch命令恢               復  patch -b f3 diff.log   

而patch命令是用來恢復diff格式文件的

        使用 -b選項自動備份改變了的文件

Linux文本處理三劍客: 

    grep:文本過濾(模式:pattern)工具

    set: stream editor, 文本編輯工具

    awk: Linux上實現gawk,文本報告生成器

grep工具:

    grep: Global search REgular expression and Print out   the line.

                      全局搜索正則表達式和打印行

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

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

         命令語法:     grep [OPTIONS] PATTERN [FILE…]

          

blob.png

       grep "$USER" /etc/passwd    會把“$USER”當成變量

          

blob.png

         grep ‘$USER’ /etc/passwd   匹配不出結果

         grep `whoami` /etc/passw  

      

blob.png

 grep命令選項:


–color=auto: 對匹配到的文本著色顯示;

-v: 顯示不能夠被pattern 匹配到的行;除了參數之外的其他行

blob.png

-i: 忽略字符大小寫

-n: : 顯示匹配的行號

-c: 統計匹配的行數

blob.png

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

blob.png

-q: 靜默模式,不輸出任何信息

blob.png

用于只關心能不能成功,而不關心內容   echo $?可查看上一條命令是否執行成功,若執行成功,是0 ;執行失敗是非0

-A # :after, 后#行

blob.png

              顯示匹配結果之后的#行

-B #: before, 前#行   道理和-A選項相同

-C # :context, 前后各#行   參考-A ,-B

-e :實現多個選項間的邏輯or關系    grep –e ‘cat ’ -e ‘dog’ file

     例:

blob.png

         顯示出有root或/home的行

 

blob.png

      匹配顯示出既有/home  又有xixi的行

-w :整行匹配整個單詞

blob.png

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

正則表達式:

        REGEXP:由一類特殊字符及文本文字符所編寫的模式,其中有些字符(元字符)不表示字符字面意思,而表示控制或通配的功能

         程序支持:grep,vim,nginx

         分兩類:  基本正則表達式:BRE    ;   擴展正則表達式:ERE

                    grep -E =egrep

        正則表達式引擎:

                 采用不同算法,檢查處理正則表達式的軟件模塊 

                  PCRE(Perl Compatible Regular Expressions)

         元字符分類:字符匹配、匹配次數、位置錨定、分組

基本正則表達式元字符:

   字符匹配:

        . :匹配任意單個字符

blob.png

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

       

blob.png

     由于r和t之間只寫了一個[a-z],所以匹配到的是一個字符

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

blob.png

       [:digit:] 、[:lower:] 、[:upper:] 、[:alpha:] 、[:alnum:]、                 [:punct:] 、[:space:](包括空格和tab鍵)

 匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數

* :匹配前面的字符任意次,包括0次

       貪婪模式:盡可能長的匹配

        

blob.png

       ro*t表示r和t之間有任意個o 或者沒有

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

blob.png

\? :匹配其前面的字符0或1次

blob.png

\+ :匹配其前面的字符至少1次

blob.png

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

          

blob.png

              匹配指定的m次

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

            

blob.png

           匹配r,t之間,o至少0次,至多3次的字符

\{,n\} :匹配前面的字符至多n次

blob.png

            匹配r,t之間,o最多6次的字符

\{m,\} :匹配前面的字符至少m次

blob.png

             匹配r,t之間,o至少3次的字符 

位置錨定:定位出現的位置

^ :行首錨定,用于模式的最左側

      

blob.png

      顯示root在行首的行 

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

          

blob.png

       顯示bash在行尾的行

附加一個:


blob.png

     顯示root在行首bash結尾的行,   .*表示root和bash之間的任意長度字符

^PATTERN$: 用于模式匹配整行

     ^$: 空行

         

blob.png

              只顯示空行  

     ^[[:space:]]*$ :空白行   包括空行,或者空行中帶空格行 

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

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

如果只錨定詞首或詞尾,會出現下面這種情況:

          

blob.png

   \<PATTERN\>匹配整個單詞

blob.png

分組:  \(\):將一個或多個字符捆綁在一起,當做一個整體進行處理:

   如:\(root\)\+,表示root這個單詞至少出現一次  中間可帶有其他任意字符

blob.png

         分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …

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

         后向引用:引用前面的分組括號中的模式所匹配字符(而非模式本身)

來個實例:


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

       

blob.png

blob.png


egrep 及擴展的正則表達式:

         egrep = grep -E       egrep [OPTIONS] PATTERN [FILE…]

        字符匹配:

                     . 任意單個字符

                     [] 指定范圍的字符

                     [^] 不在指定范圍的字符

擴展正則表達式

    次數匹配:

                 *:匹配前面字符任意次

                 ?: 0或1次

                 +:1次或多次

                {m}:匹配m次

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

blob.png

    位置錨定:

                 ^ : 行首

                 $ : 行尾

                 \<, \b : 語首

                 \>, \b : 語尾

    分組:

                 ()      后向引用:\1, \2, …

     或者:

                 a|b

                 C|cat: C 或cat

                (C|c)at:Cat 或cat

用法參照練習題http://www.www58058.com/?p=30590&preview=true

原創文章,作者:舊城以西,如若轉載,請注明出處:http://www.www58058.com/29482

(0)
舊城以西舊城以西
上一篇 2016-08-07 14:17
下一篇 2016-08-07 22:05

相關推薦

  • 搜索引擎的檢索模型-查詢與文檔的相關度計算

    1. 檢索模型概述       搜索結果排序時搜索引擎最核心的部分,很大程度度上決定了搜索引擎的質量好壞及用戶滿意度。實際搜索結果排序的因子有很多,但最主要的兩個因素是用戶查詢和網頁內容的相關度,以及網頁鏈接情況。這里我們主要總結網頁內容和用戶查詢相關的內容。     &nbsp…

    2015-12-10
  • N26 – 第三周作業

    1、列出當前系統上所有已登錄的用戶的用戶名,同一用戶登錄多次只顯示一次     ~]# who -u |cut -d ' ' -f1|uniq -u 2、最后登錄到當前系統的用戶的相關信息     ~]#id $(last | h…

    Linux干貨 2017-01-03
  • 文件搜索工具—— find locate

           文件查找                 ? 在文件系統上查找符合條件的文件;    &nbsp…

    Linux干貨 2016-08-22
  • linux開篇六式

    第一式. Linux上的文件管理類命令,其常用的使用方法及其相關示例。       mkdir, 創建目錄       rmdir,刪除目錄       tree, 顯示目錄層級       cat和tac均用于查看文件,cat是從文件首向…

    Linux干貨 2016-10-13
  • OpenSSL

    三個組件: openssl: 多用途的命令行工具; libcrypto: 加密解密庫; libssl:ssl協議的實現; PKI:Public Key Infrastructure CA RA CRL 證書存取庫  建立私有CA: OpenCA openssl  證書申請及簽署步驟: 1、生成申請請求; 2、RA核驗; 3、CA簽署; 4…

    Linux干貨 2015-03-21
  • 第七周-磁盤管理、RAID及Shell腳本練習

    一、創建一個10G分區,并格式為ext4文件系統; (1)、 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2)、掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@N1 ~]# mkfs.ext4 -b 2048 -m 2 -L MYDATA /…

    Linux干貨 2017-08-13
欧美性久久久久