文本處理工具

一、文本處理工具的分類:

    查看全部內容:more、less、cat、tac、rev

    截取文件內容:head 、tail

    抽取文件內容:cut

    抽取關鍵字:grep、egrep

    合并兩個文件的內容:paste

    下面我們分別來對個命令進行講解:

            more:

                特點:按屏顯示、只能向下翻頁

                翻頁鍵:enter:向文件尾部翻一行;space:向文件尾部翻一屏幕

                選項:

                        -#:可指定一屏顯示多少行

                        +#:從文件的第#行開始顯示

                         +/string:從匹配到string的行開始顯示

            less:

                特點:按屏顯示、可以向上、向下翻頁

                翻頁鍵:enter:向文件尾部翻一行;space:向文件尾部翻一屏幕

                              k:向文件首部翻一行;b:向文件首部翻一屏幕

                選項:/string,可以查看匹配到的字符串,N|n匹配上一個或下一個

            cat:

                特點:全部顯示    

                選項:

                        -n:顯示每一行的行號

                        -b:只顯示非空行的行號

                        -A:顯示左右內容包括控制符

                        -E:顯示行結束符

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

            tac:

                特點:相當于cat的取反,從下往上顯示

            rev:cat輸出的結果,旋轉180度輸出。

    根據下面輸出結果可以看出cat、tac、rev的區別

                [root@localhost testdir]# cat a
                1 2 3 4 5 6 7 8 9 10
                abc
                [root@localhost testdir]# tac a
                abc
                1 2 3 4 5 6 7 8 9 10
                [root@localhost testdir]# rev a
                01 9 8 7 6 5 4 3 2 1
                cba

             head:

                    -#:顯示文件的前#行

                    -c:顯示前N個字節

             tail:

                    -#:顯示文件的后#行

                    -c:顯示后N個字節

                    -f:可以監聽文件或日志是否有更新

                                tail -n 0 -f /var/log/messages &

            cut:

                    特點:可根據分隔符來分割匹配到的行

                    選項:

                          -d:指定分隔符

                           -f:指定要分割的列

                           -c:按字符切割 -c1-5 指定切割每行的前5個字符

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

            paste:

                    特點:合并兩個文件的同一行 到一行中顯示

                    選項:

                            -d:指定兩個文件的分隔符,默認時tab

                            -s:兩個文件,file1文件所有內容放到一行顯示,file2同file

                root@cenots6.8  ~ # paste /etc/issue /etc/passwd
                CentOS release 6.8 (Final)    root:x:0:0:root:/root:/bin/bash
                Kernel \r on an \m    bin:x:1:1:bin:/bin:/sbin/nologin
                daemon:x:2:2:daemon:/sbin:/sbin/nologin
                root@cenots6.8  ~ # paste -s /etc/issue /etc/passwd
                CentOS release 6.8 (Final)    Kernel \r on an \m    
                root:x:0:0:root:/root:/bin/bash    bin:x:1:1:bin:/bin:/sbin/nologin    daemon:x:2:2:dae

           grep:  

                    特點:查找匹配到的關鍵字,支持正則表達式和擴展正則表達式

                    選項:

                            -o:只顯示匹配到的內容

                            -v:除了匹配到的內容,其他的內容都顯示

                            -E:擴展正則表達式

                            –color:匹配到的內容顯示紅色

                            -i:忽略大小寫匹配

                            -q:靜默模式,通常用戶shell腳本中,來判斷是否正常輸出,echo $?查看

                            -A#:顯示匹配到內容及后#行

                            -B#:顯示匹配到內容及前#行

                            -C#:顯示匹配到的內容及前后#行

                            -e:實現多個匹配選項的或關系

二、分析文本的工具

        排序:sort

        去重:uniq

        統計數量:wc          

        比較文件:diff、patch

              sort:

                      特點:文本排序后在屏幕上顯示出來

                      選項:

                            -n:按照數字大小排序

                            -t:指定分隔符

                            -k:指定排序的行默認正序

                            -r:逆序排序輸出的行

                            -u:刪除輸出重復的行(不相鄰重復的也算重復和uniq的區別)

                             -f:忽略字母大小寫

              uniq:

                        特點:可以查看重復的次數,可以顯示重復的和不重復的內容

                        選項:

                                -c:在行首顯示該行重復的次數

                                -d:只顯示重復的行

                                -c:只顯示不重復的行

             wc:

                        特點:可統計單詞數,字符數,行數

                        選項:

                                -l:顯示行數     –line

                                -c:顯示字節數 –char

                                -w:單詞數       –world

              diff:

                         特點:可以比較兩個文本的不同,針對不同內容可以顯示出來或輸出到指定文件中當做補丁使用

                          選項:   -u,為輸出內容定義統一的diff格式,用于打補丁

                root@cenots6.8  /testdir # paste a b
                I am a    I am b
                haha      hello
                waht?     waht?
                a         b
                
                root@cenots6.8  /testdir # diff a b
                1,2c1,2         #    1,2c1,2 表示a文件的第1行和第二行和b文件的第一行和第二行有不同
                < I am a        #   “<”表示a文件的內容
                < haha
                ---
                > I am b        #   “>”表示a文件的內容
                > hello
                4c4
                < a
                ---
                > b

               patch:

                          特點:配合diff命令用戶生成補丁文件

                          選項:-b,補丁文件的時候保留源文件

                                     -i,源文件  補丁文件 

                              不加-i,補丁文件,源文件 

                root@cenots6.8  /testdir # diff -u a b >c.patch
                root@cenots6.8  /testdir # cat c.patch 
                --- a    2016-08-08 10:12:06.173647189 +0800
                +++ b    2016-08-08 10:12:12.640741349 +0800
                @@ -1,4 +1,4 @@
                -I am a
                -haha
                +I am b
                +hello
                 waht?
                -a
                +b
                root@cenots6.8  /testdir # patch -b a c.patch   #  將a文件補丁成b文件,并保存源文件
                patching file a
                 root@cenots6.8  /testdir # cat a
                 I am b
                 hello
                waht?
                b
                            
                root@cenots6.8  /testdir # patch -i c.patch a   # 讀取補丁從c.patch 輸入 和上述方法一致
                patching file a                      #  只是參數位置不同                                               
                root@cenots6.8  /testdir # cat a 
                I am b
                hello
                waht?
                b
                 root@cenots6.8  /testdir # patch -b a < c.patch  # 將a文件恢復原樣 
                patching file a
                Reversed (or previously applied) patch detected!  Assume -R? [n] y
                 root@cenots6.8  /testdir # cat a
                 I am a
                haha
                 waht?
                a

三、正則表達式和擴展正則表達式

            正則表達式功能非常強大,我們可以通過組合一些特殊字符或文本來匹配到我們需要的內容,有些程序功能之所以強大也因為其支持正則表達式,例如:grep、sed、vim等

            根據元字符分類:

                    字符匹配:

                                    [0-9]:匹配0-9之間任意一個數字

                                    [a-z]:匹配aAbB……yYz之間任意一個字母

                                    [A-Z]:匹配aAbB……yYz之間任意一個字母

                                    [[:alpha:]]:匹配任意一個字母

                                    [[:digit:]]:匹配任意一個數字

                                    [[:alnum:]]:匹配任意一個數字或字母

                                    [[:upper:]]:任意一個大寫字母

                                    [[:lower:]]:任意一個小寫字母

                                    [[:punct:]]:匹配任意一個符號

                                    [[:space:]]:匹配任意一個空格或tab

                                     \(ab\).*\1:匹配左面第一個()里面的內容

                                    .:任意單個字符

                    次數匹配:

                                    \{x,y\}:匹配至少x次,最多y次

                                    \{x,\}:匹配至少x次

                                    \{,y\}:匹配最多y次

                                    \{x\}:匹配x次

                                    \?:匹配0次或1次

                                    \+:匹配至少1次

                                     *:*前面的字符匹配任意次

                    位置錨定:

                                    ^:錨定行首

                                    $:錨定行尾

                                    \<或\b:錨定詞首

                                    \>或\b:錨定詞尾

                    分組:

                                \(ab\)

                    其他:

                                [^]:非

                                   \:某些具有特殊意義的字符在需要匹配的時候需要轉移

       擴展正則表達式:

                擴展正則表達式,除了元字符的區別外,還多了一個 “|” 命令

                        

            根據元字符分類:

                    字符匹配:

                                    [0-9]:匹配0-9之間任意一個數字

                                    [a-z]:匹配aAbB……yYz之間任意一個字母

                                    [A-Z]:匹配aAbB……yYz之間任意一個字母

                                    [[:alpha:]]:匹配任意一個字母

                                    [[:digit:]]:匹配任意一個數字

                                    [[:alnum:]]:匹配任意一個數字或字母

                                    [[:upper:]]:任意一個大寫字母

                                    [[:lower:]]:任意一個小寫字母

                                    [[:punct:]]:匹配任意一個符號

                                    [[:space:]]:匹配任意一個空格或tab

                                     (ab).*\1:匹配左面第一個()里面的內容

                                    .:任意單個字符

                    次數匹配:

                                    {x,y}:匹配至少x次,最多y次

                                    {x,}:匹配至少x次

                                    {,y}:匹配最多y次

                                    {x}:匹配x次

                                    ?:匹配0次或1次

                                    +:匹配至少1次

                                    *:*前面的字符匹配任意次

                    位置錨定:

                                    ^:錨定行首

                                    $:錨定行尾

                                    \<或\b:錨定詞首

                                    \>或\b:錨定詞尾

                    分組:

                                (ab)

                    其他:

                                [^]:非

                                   \:某些具有特殊意義的字符在需要匹配的時候需要轉移

                                   |:

                                        c | Cat :結果時c或Cat

                                    (c|C)at:結果是cat 或Cat

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

(1)
NarutoNaruto
上一篇 2016-08-08 10:03
下一篇 2016-08-08 16:03

相關推薦

  • linux下NTP服務

    linnux NTP

    2017-10-18
  • Linux初探

    1.計算機組成: CPU:運算器(指令集)、控制器、寄存器、緩存; 存儲器:內存,RAM; Input:下指令,提供數據; Ouput:輸出數據加工的結果 一般來說,從磁盤中讀取程序和數據放到內存中排隊,由cpu從內存中讀取執行。由于cpu處理速度遠大于磁盤的I/O速度,因此引入緩存。在計算機中有緩存為王這個說法。 2.操作系統的背景: 1.統一規范 2.由…

    Linux干貨 2016-10-30
  • lamp架構實現論壇架構及壓力測試

    練習:分別使用CentOS 7和CentOS 6實現以下任務 (1) 配置四個基于名稱的虛擬主機;   (a) discuzX   (b) wordpress   (c) drupal   (d) phpMyAdmin,此虛擬主機僅支持https協議; (2) 對phpMyAdmin首頁做壓力測試   分別給…

    Linux干貨 2016-10-17
  • sed基本用法

    Stream EDitor, 行編輯器  sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space), 接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。然后讀入下行,執行下一個循環。如果沒有使諸如‘D’的特殊命令, 那會在兩個循環之間清空模式空間,但不會…

    Linux干貨 2017-08-20
  • iptables

    iptables簡介 netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火墻,與大多數的Linux軟件一樣,這個包過濾防火墻是免費的,它可以代替昂貴的商業防火墻解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT)等功能。 iptables基礎 規則(rules)其實就是網絡管理員預定義的條件,規則一般的定義為“…

    2017-05-02
  • 重定向

    Linux下定義了三種I/O設備: 標準輸入(STDIN):用0表示,默認的標準輸入設備是鍵盤; 標準輸出(STDOUT):用1表示,默認的標準輸出設備是當前終端; 標準錯誤(STDERR):用2表示,默認的標準錯誤輸出設備是當前終端; I/O重定向即改變默認的位置 1 標準輸出重定向 (1)將標準輸出重定向到其他終端 /dev/pts/1代表偽終端1,在偽…

    Linux干貨 2017-07-31
欧美性久久久久