文本處理及正則表達式

文本處理工具:

    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 22:54
下一篇 2017-05-31 23:12

相關推薦

  • 蘿卜運維記–第一周

    part1— ①描述計算機的組成及功能 ▲計算機是什么? 計算機(ENIAC):簡述—-接收用戶的指令,經過中央處理器處理過后,產生對使用者有用的信息。具有存儲記憶,處理復雜數據運算的計算機器 Ⅰ 計算機組成及功能 ☆硬件部分: 1.中央處理器CPU(Central Processing Unit)↓↓↓↓:  &n…

    Linux干貨 2016-12-06
  • N25_第四周作業(補)

    1、復制/etc/skel目錄到/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@EASTED tmp]# cp -r /etc/skel/ /home/tuser1/ [root@EASTED tmp]# cp …

    Linux干貨 2017-01-02
  • 推薦-使用iptables作為網絡防火墻構建安全的網絡環境

    使用iptables作為網絡防火墻構建安全的網絡環境 使用iptables作為網絡防火墻構建安全的網絡環境 前言 網絡防火墻的優勢 實驗拓撲圖 實驗環境 實驗步驟 防火墻未設置前對所有服務器的測試 針對不同服務器進行”非法”訪問 定義網絡防火墻規則 再次針對不同服務器進行”非法”訪問 測試服務器是否可訪問 總結 前言 一般情況下iptables只作為主機防火…

    Linux干貨 2016-03-31
  • bash腳本編程實例

    bash腳本編程實例 1.寫一個腳本 接受一個以上文件路徑作為參數 顯示每個文件擁有的行數 總結說明本次共為幾個文件統計了其行數 #!/bin/bash # read -p “please input some paths:” paths if [ -z $paths ];then echo “There are not any paths inputtin…

    Linux干貨 2017-08-14
  • 第一周作業

    1、描述計算機的組成及其功能。
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。
    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echou、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及共用規定。

    Linux干貨 2017-12-03
  • linux發展簡史

    前言 為什么要寫這么一篇文章呢?我發現我雖然知道linux的一些知識,卻不知道linux方面的歷史,所以今天寫一篇關于linux方面歷史的文章,用來總結這段時間自己所學習到的關于linux的歷史與linux的知識。關于說起linux的歷史,就不得不介紹計算機的歷史,與其他相關操作系統的一些歷史,所以本文中的會簡單介紹Linux與其他操作系統的關系。主要講li…

    Linux干貨 2017-02-16
欧美性久久久久