文本處理及正則表達式

文本處理工具:

    more:分頁查看文件

    less:分頁控制顯示文件

    head 查看文件的前幾行

        -n 3   顯示前三行

        -3  顯示前三行

        -c  指定顯示的字節數

        一個漢字占用三個字節

   tail   查看顯示文件的后幾行

        -n 3   顯示后幾行

        -c    顯示最后的指定字節數

        -f    跟蹤顯示更新

   cut [0ption]  [file]

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

        -f:指明第幾列

        #:第#個字段

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

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

        混合使用:1-4,7    1到4列和第7列

        -c:按字符切割

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

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

       paste [option] [file]

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

       wKioL1ku0kuCsYJSAAAfSTGyPbU268.png-wh_50

                -s:所有的行合并到一行顯示

                paste f1 f2

                paste -s f1 f2

            文本處理及正則表達式

    wc 計數單詞總數、行總數、字節總數和字符總數
        可以對文件或STDIN 中的數據運行
            wc story.txt
            39 237 1901 story.txt
            行數 字數 字符數
        使用 -l 來只計數行數
        使用 -w 來只計數單詞總數
        使用 -c 來只計數字節總數
        使用 -m 來只計數字符總數
    sort 文本排序
        把整理過的文本顯示在STDOUT ,不改變原始文件
        sort [options] file(s)
            常用選項
                -r 倒序(由上至下)排列
                -n 執行按數字大小排列
                -f 選項忽略(fold )字符串中的字符大小寫
                -u (獨特,unique )刪除輸出中的重復行
                -t c: 指定c為字段分割符
                -k X:指定的c字符分割的X列排序
    unip行
        uniq [OPTION]… [FILE]…
            -c: 顯示每行重復出現的次數
            -d: 僅顯示重復過的行
            -u: 僅顯示不曾重復的行
            連續且完全相同方為重復
        常和sort 命令一起配合使用:
            sort userlist.txt | uniq -c
    diff:比較兩個文件
        比較兩個文件之間的區別
            diff foo.conf-broken foo.conf-works
        diff 命令的輸出被保存在一種叫做“補丁”的文件中

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

         文本處理及正則表達式

        patch 復制在其它文件中進行的改變(要謹慎使用)
        適用 -b 選項來自動備份改變了的文件
            diff -u foo.conf-broken foo.conf-works > foo.patch
            patch -b foo.conf-broken foo.patch

文本處理及正則表達式

grep :文本過濾( 模式:pattern) 工具
    grep, egrep, fgrep (不支持正則表達式 搜索)
sed :stream editor 文本編輯工具
awk :Linux 上的實現gawk,文本報告生成器
grep:
    作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行模式:由正則表達式字符及文本字符所編寫的過濾條件.
    選項:

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

         文本處理及正則表達式 

        -v: 顯示不被pattern 匹配到的行
        -i:忽略字符大小寫
        -n:顯示匹配的行號
        -c: 統計匹配的行數
        -o: 僅顯示匹配到的字符串
        -q: 靜默模式,不輸出任何信息
        -A #: after, 后#行
        -B #: before, 前#行

        -C # :context, 前后各#行

         文本處理及正則表達式

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

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

        文本處理及正則表達式

        -w :匹配 整個單詞
        -E :使用ERE
        -F :相當于fgrep

正則表達式

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

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

    基本正則表達式元字符:

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

            . 匹配任意單個字符
            [] 匹配指定范圍內的任意單個字符
            [^] 匹配指定范圍外的任意單個字符
            [:alnum:] 字母和 數字
            [:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
            [:lower:] 小寫字母 [:upper:] 大寫字母
            [:blank:] 空白字符(空格和制表符)
            [:space:] 水平和垂直的空白字符(比[:blank:] 包含的范圍廣)
            [:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…) )
            [:digit:] 字 十進制數字 [:xdigit:] 十六進制數字
            [:graph:] 可打印的非空白字符
            [:print:] 可打印字符
            [:punct:] 標點符號
    正則表達式匹配次數
        匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
            * 匹配 前面的字符任意次,包括0次 次
                貪婪模式:盡可能長的匹配

            .* 任意 長度的任意字符

            文本處理及正則表達式

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

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

             文本處理及正則表達式

            \{n\} 匹配前面的字符n次

             文本處理及正則表達式

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

            文本處理及正則表達式

            \{,n\} 匹配前面的字符至多n次
            \{n,\} 匹配前面的字符至少n次
        位置錨定:定位出現的位置
            ^ 行首錨定,用于模式的最左側

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

          文本處理及正則表達式

          文本處理及正則表達式
        ^PATTERN$ 用于模式匹配整行

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

        文本處理及正則表達式

        \< 或\b 詞首錨定,用于單詞模式的左側
        \> 或\b 詞尾錨定;用于單詞模式的右側

        \<PATTERN\>

        文本處理及正則表達式

        文本處理及正則表達式

        文本處理及正則表達式

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

        文本處理及正則表達式

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

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

          示例: \(ab\+\(xy\)*\)
                \1 :ab\+\(xy\)*
                \2 :xy

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

       文本處理及正則表達式

       或則:\|

          示例:a\|b: a 或b C\|cat: C 或cat \(C\|c\)at:Cat 或cat
    egrep及擴展的正則表達式
        egrep = grep -E
        egrep [OPTIONS] PATTERN [FILE…]
        擴展正則表達式的元字符:
        字符匹配:
            . 任意單個字符
            [] 指定范圍的字符
            [^] 不在指定范圍的字符
    擴展正則表達式
        次數匹配:
            * :匹配前面字符任意次
            ?: 0 或1次
            + :1 次或多次
            {m} :匹配m次
            {m,n} :至少m ,至多n次
        位置錨定:
            ^ : 行首
            $ : 行尾
            \<, \b : 語首
            \>, \b : 語尾
        分組:()
        后向引用:\1, \2, …
        或者:
            a|b: a 或b
            C|cat: C 或cat
            (C|c)at:Cat 或cat

fgrep:不支持正則表達式

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

(1)
danrandanran
上一篇 2017-05-31
下一篇 2017-05-31

相關推薦

  • Centos系統 本地自動安裝

    §·Centos系統光盤安裝的流程 大概的了解下Centos的光盤系統安裝流程: 1.插入光盤,出現菜單選擇界面;通常情況下我們選擇第一項: 第一項 : Install  or upgrade an existing system   2.默認進入圖形界面安裝并且進行一些必要的環境設置(安裝前的配置階段) 需要我們手工設置的項目…

    Linux干貨 2016-09-15
  • 第七周練習

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

    Linux干貨 2016-12-11
  • Linux學習之課前環境安裝調試

    系統安裝,VNC,VMware軟件安裝

    2018-03-26
  • 馬哥教育網絡班19期+第7周課程練習

    1.創建一個10G分區,并格式為ext4文件系統:   (1)要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;   (2)掛載至/data/mydata目錄,要求掛載時禁止程序自行運行,且不更新文件的訪問時間戳;   fdisk /dev/sdb    part…

    Linux干貨 2016-06-22
  • 管理用戶組的命令

    用戶賬戶 管理用戶的命令及配置文件, Useradd,usermod,userdel,newusers,chpasswd,passwd,chage,chfn,chsh,id,su,finger Useradd:創建用戶,         Useradd 選項 參數  &…

    Linux干貨 2016-10-23
欧美性久久久久