文本處理工具

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

    查看全部內容: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
下一篇 2016-08-08

相關推薦

  • ?Linux基礎知識之文件權限

    實驗環境:    Linux系統版本為CentOS6.8_x86_64版本,以root用戶和sjsir用戶遠程用xshell連接系統,進行試驗。 文本目錄:    1.文件的屬性    2.文件權限相關的命令    3.umask 新建文件和目錄的默認權限   &nbs…

    Linux干貨 2016-08-05
  • LVM 邏輯卷管理

    一、概述: LVM: logical Volumn Manager  LVM是建立在硬盤和分區之上的一個邏輯層??梢詫⒍鄠€物理分區整合起來,無需停機,可以對文件系統的大小進行調整。同時,還提供快照功能 二、概念及實現過程: PE :每一個物理卷PV被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的…

    Linux干貨 2015-10-05
  • 馬哥教育網絡班21期+第七周博客作業

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

    Linux干貨 2016-08-24
  • 文本處理工具以及grep

    文本處理工具以及grep 我們在使用Linux系統的時候需要查看、分析或者統計文件,這時候我們就需要使用到文本處理工具。 我們先來看下幾個文本處理工具的使用: 文件內容:less和 cat 文件截取:head和tail 按列抽?。篶ut 按關鍵字抽?。篻rep 我們先來看看less和cat cat:查看文件命令     用法: &nbsp…

    Linux干貨 2016-08-08
  • 系統基礎之shell腳本編程詳解2

    shell腳本編程2:   在上節我們介紹了shell腳本編程,但只是介紹了基礎的內容,下面將為大家介紹shell的腳本的高級用法,判斷與循環.判斷分為兩種:if語句和case語句;循環分為三種:for語句,while語句,until語句,select語句 判斷語句:  在腳本的編寫中,我們要使用大量的數據和命令,但對于使用的數據,我們要…

    Linux干貨 2016-08-19
  • 文本處理三劍客之awk

    一、知識整理 1、awk報告生成器,格式化文本輸出 發明人:a.k.a. Aho,Kernighan,weinberger awk程序通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊三部分組成。program通常是放在單引號或雙引號中。 基本用法:awk [] ‘program’ var=value fiel… pr…

    Linux干貨 2016-09-26
欧美性久久久久