文本處理工具與正則表達式

一、文本處理工具

    1.文本查看命令

          cat [OPTION]… [FILE]…

        -n 顯示行號

        -b 空格行不加行號,有字符的行才加

        -s  相鄰的空行壓縮為一行,長和-n聯用

        -v 處理windows中的^M

        -T 可以看到tab\space

        -A  顯示所有控制符(包括windows文本中的^M,^T)

        -E  顯示行結束符$ (回車)

      

         tac [OPTION]… [FILE]…  將每個指定文件按行倒置并寫到標準輸出。

                         效果與cat 相反

         rev  將指定文件從最后一個字符開始顯示到第一個字符。

     

             效果比較:

    文本處理工具與正則表達式

cat.PNG

    

    2.分頁查看文件內容

        more 分頁查看文件(無法向前面翻, 只能往后面看)

        more [OPTIONS…] FILE…

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

        常用快捷操作:

        Enter    向下n行,需要定義。默認為1行

        Ctrl+F   向下滾動一屏

        空格鍵  向下滾動一屏

        Ctrl+B  返回上一屏

        =       輸出當前行的行號

        :f     輸出文件名和當前行的行號

        V       調用vi編輯器

        !cmd  調用Shell,并執行命令 

        q        退出more

        less 一頁一頁地查看文件或STDIN輸出(與more類似,但是支持上下翻)

        常用快捷操做:

        /字符串:向下搜索“字符串”的功能

        ?字符串:向上搜索“字符串”的功能

        n:重復前一個搜索(與 / 或 ? 有關)

        N:反向重復前一個搜索(與 / 或 ? 有關)

        b  向后翻一頁

        d  向后翻半頁

        h  顯示幫助界面

        Q  退出less 命令

        u  向前滾動半頁

        y  向前滾動一行

        空格鍵 滾動一行

        回車鍵 滾動一頁

        [pagedown]: 向下翻動一頁

        [pageup]:   向上翻動一頁

    3.顯示文本前、后行內容

        head  顯示指定文件的開頭至標準輸出中

        head [OPTION]… [FILE]…

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

        -n #: 指定獲取前#

        -#: 指定行數

         tail  顯示指定文件的結尾至標準輸出中

        tail [OPTION]… [FILE]…

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

        -n #: 指定獲取后#行

        -#:  指定從結尾開始的#行內容

        +#: 指定從開頭開始的#行內容

        -f: 跟蹤顯示文件新追加的內容,常用日志監控

        常用方法:tail -n 0 -f file &  (放入后臺跟蹤文件新追加的內容,有新加入內

                             容則彈出)

    4.文本抽取、合并

        cut [OPTION]… [FILE]…    按列抽取文本指定內容

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

        -f FILEDS:

        #: 第#個字段

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

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

        混合使用: 1-3,7  取1至3,第七字段

        -c 按字符切割

        -c M-N 取第M-N個字符之間的內容

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

        使用示例:

        cut -d: -f1 /etc/passwd

        cat /etc/passwd | cut -d: -f7

        cut -c2-5 /usr/share/dict/words

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

        paste [OPTION]… [FILE]…

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

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

        使用示例

        文件f1:                        文件f2 :

        1                                 a

        2                                 b

        3                                 c

        4                                 d

        文本處理工具與正則表達式paste.PNG

    5.文本數據統計

          wc     統計指定文件中的字節數、單詞數、行數, 并將統計結果顯示輸出

              直接使用 wc file —>

                行數      字數      字符數(= 字節數)  

               常用選項:

            -c, –bytes統計字節數

            -m, –chars  統計字符數

            -l, –lines  統計行數

            -L, –max-line-length  統計最長行的長度

            -w, –words 統計單詞數

    6.文本排序

         sort 把整理過的文本顯示在STDOUT,不改變原始文件

        $ sort [options] file(s)

        常用選項

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

        -n 執行按數字大小整理

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

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

        -t c 選項使用c做為字段分隔符

        -k X 選項按照使用c字符分隔的X列來整理能夠使用多次

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

        uniq [OPTION]… [FILE]…

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

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

        -u: 僅顯示不曾重復的行;

        連續且完全相同方為重復

        常和sort 命令一起配合使用:

        sort userlist.txt | uniq -c

    7.文件比較

     比較兩個文件之間的區別

        $ diff foo.conf-broken foo.conf-works

        5c5

        < use_widgets = no

        —

        > use_widgets = yes

        ? 注明第5行有區別(改變)

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

        使用 -u 選項來輸出“統一的( unified)” diff格式文件,最適用于補丁文件。

        patch 命令復制在其它文件中進行的改變(要謹慎使用?。?/p>

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

        $ diff -u foo.conf-broken foo.conf-works > foo.patch

         #將兩個文件的不同之處保存至備份文件中

        $ patch -b foo.conf-broken foo.patch     #恢復備份信息

    

二、正則表達式

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

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

        打印匹配到的行;

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

        grep [OPTIONS] PATTERN [FILE…]

        使用示例:

            grep root /etc/passwd

            grep "$USER" /etc/passwd

            grep '$USER' /etc/passwd

            grep `whoami` /etc/passwd

        常用選項:

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

            (CentOS7中,默認已經使用命令別名

            alias grep = grep –clor=auto)

            ? -v: 顯示不能夠被pattern匹配到的行;

            ? -i: 忽略字符大小寫

            ? -n: 顯示匹配的行號

            ? -c: 統計匹配的行數

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

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

            ? -A #: after, 后#行

            ? -B #: before, 前#行

            ? -C #: context, 前后各#行

            ? -e:實現多個選項間的邏輯or關系

        eg:  grep –e ‘cat ’ -e ‘dog’ file

            ? -w:整行匹配整個單詞

            ? -E:使用ERE 拓展表達式

    2.正則表達式

      REGEXP:由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字

           面意義,而表示控制或通配的功能

         程序支持: grep, vim, less,nginx等

       分類:

        基本正則表達式: BRE

        擴展正則表達式: ERE

        grep -E, egrep

       正則表達式引擎:

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

        Expressions)

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

        幫組信息: man 7 regex

        字符匹配:

            . : 匹配任意單個字符;

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

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

            [:digit:]、 [:lower:]、 [:upper:]、 [:alpha:]、 [:alnum:]、                       [:punct:]、 [:space:]

            文本處理工具與正則表達式

文本處理工具與正則表達式

文本處理工具與正則表達式

    文本處理工具與正則表達式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            ^$: 空行

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

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

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

            \<PATTERN\>:匹配整個單詞

        分組

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

            如: \(root\)\+

            分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,

            這些變量的命名方式為: \1, \2, \3, …\1: 從左側起,

            第一個左括號以及與之匹配右括號之間的模式所匹配到的字符;

            實例:  \(string1\+\(string2\)*\)

            \1: string1\+\(string2\)*

            \2: string2

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

               3.egrep 拓展正則表達式

            egrep = grep -E

            egrep [OPTIONS] PATTERN [FILE…]

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

            字符匹配:

            . 任意單個字符

            [] 指定范圍的字符

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

        次數匹配:

            *:匹配前面字符任意次

            ?: 0或1次

            +: 1次或多次

            {m}:匹配m次

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

        位置錨定:

            ^ :行首

            $ :行尾

            \<, \b :語首

            \>, \b :語尾

        分組:

            ( )

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

            ? 或者:

            a|b

            C|cat: C或cat

            (C|c)at:Cat或cat

    

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

(1)
ldt195175108ldt195175108
上一篇 2016-08-08
下一篇 2016-08-08

相關推薦

  • 文本處理工具

    1.cat 主要三大功能: 1.一次顯示整個文件:cat filename 2.從鍵盤創建一個文件:cat > filename << EOF ….>EOF (只能創建新文件,不能編輯已有文件);cat向已經存在的文件追加內容:cat >> file <<EOF…>EOF 3.將幾…

    2017-07-29
  • 文本三劍客—sed 基礎

    文本三劍客—sed 基礎        sed編輯器被稱作流編輯器(stream editor),和普通的交互式文本編輯器恰好相反。在交互式文本編輯器中(比如vim),你可以用鍵盤命令來交互式的插入、刪除或者替換數據中的文本。流編輯器則會自愛編輯器處理數據之前基于預習提供的一組…

    Linux干貨 2017-05-15
  • RHEL6.4 yum訪問HTTPS源時出錯

    在RHEL6.4上安裝OpenStack時,使用epel的源,但源是https的,進行安裝時,總報下面的錯誤。     https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/repodata/repomd.xml:  …

    Linux干貨 2016-02-28
  • N22-冥界之王-第9周作業

    第九周    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);   分別這兩類用戶的個數;通過字符串比較來實現;     declare -a shell  &n…

    Linux干貨 2016-11-01
  • Openssl——為你的信息保駕護航

    OpenSSL基礎 ·傳輸層協議:TCP,UDP,SCTP         port:進程地址,進程向內核注冊使用某端口(獨占) ·同一主機上的進程間通信:IPC,message queue,shm,semerphor ·不同主機上的進程間通信:socket  &nbs…

    Linux干貨 2016-09-22
  • CentOS進程管理

    CentOS進程管理 筆記 Linux系統中的基本運行單位是進程,通過對系統系統中的進程的管理能夠對系統的實時運行狀態進行了解和調度。Linux中提供了用于查看、調整和停止進程的命令。本文仍然以RHEL6說明Linux系統的進程管理。 CentOS進程管理 一、進程概述 二、查看進程 1、使用ps命令 2、top命令 一、進程概述 程序是保存在存儲介質中的可…

    Linux干貨 2017-05-15
欧美性久久久久