Linux三劍客中的第二劍——Sed(文本編輯器)

   文本處理三劍客:

   第一劍:grep、egrep、fgrep 文本搜索工具

   第二劍:sed 全稱Strema Editor,一種強大的文本編輯器    

   第三劍:Awk 文本格式化工具,文本報告生成器

   本文主要描述第二劍:sed 文本編輯器

   Sed是對文件內容進行逐行處理,一行一行的進行。它處理的並不是原數據,而是將目標文件複製以後在處理。

              

   Sed用法:sed  [OPTION]... {script-only-if-no-other-script} [input-file]...

   script:來指明對文本進行什麼樣的操作(地址定界+編輯命令)

     

   Sed常用選項:

    -n:不輸出模式空間中的內容到屏幕上(模式空間:sed工作的地方,對文本進行處理、加工)

    (如果配合d命令,則不會顯示任何內容。如果配合p命令,則只顯示匹配到的內容) 

    -e:在一個sed中可以編輯多個腳本(運行多個命令)

    -f:每行編輯一個命令/PATH/TO/SED_SCRIPT_FILE

    -r:支持使用擴展正則表達式

    -i:直接編輯原文件

  

    地址定界:

     (1)空地址(不指明文本中的某一行):對全文進行處理

     (2)單地址(指定一個數字):   

          #:明確文本中的第幾行

         /PATTERN/:顯示每一行中有此模式的行

     (3)地址範圍(起始,結束):中間用逗號隔開

          #,#:從第幾行到第幾行

          #,+#:顯示從#行開始,在顯示+#行。

          例如:“3,+8”  意思是從第三行開始,再往下顯示八行(總共顯示了9行)

          #,/part/:顯示從指定的#行開始直到第一次被模式所匹配到的之間的行

         /partten1/,/partten2/:顯示第一次被模式匹配和第二次被模式匹配之間的行

     (4)步進:

          1~2:顯示所有的奇數行

        2~2:顯示所有的偶數行


     編輯命令:

        d:刪除指定的行

         例:把wxpp文件中的第2-5行刪除掉

          wKiom1buQgvAruJOAABJI9R4F20094.png

        p:指定的行顯示2次

         例:把wxpp文件中奇數行顯示2次

           wKioL1buRjuzcFJBAAAg5h2cB7A541.png

        a: 在匹配到的下方追加文本(模式:\text);多行追加(\text\ntext)

          例:在wxpp文件中的第三行追加2行“wtc xi huan wxpp”“wxpp xi huan wtc”

            wKiom1buT06R7HTPAAAk8iBPMS4294.png

         如果想全文都追加“wtc xi huan wxpp”,把命令中的地址定界“3”刪除掉即可,如下圖  

           wKiom1buSizDXqEkAAA0S_tCYW0111.png  

        i:在匹配到的行上方插入本文(模式:\text)

         例:在wxpp文件中的第3行插入“wtc xi huan wxpp”

           wKiom1buTCmBryupAAAf2BzzLj4752.png

       

        c:把匹配到的行替換爲指定的文本(模式:\text)(注意:整行替換)

          例:把wxpp文件中第2-5行換成“wxpp xi huan wtc”

            wKiom1buUCLgVXNhAAAZwRd0W5w169.png

          注意:把2-5行換成“wxpp xi huan wtc”是把2-5行看成一個整體,替換爲“wxpp xi huan wtc”

            

       w:把模式空間中的內容保存在指定的文件中

        例:把/etc/stab中以UUID的開頭的行保存知道/tmp/wtc中

         

   wKioL1buVO_zIfHbAABLQg5ysPE666.png


    r:把指定文件的內容加入到匹配模式行的後面(文件合併,把一個文件中的內容穿插到另一個文件中)

     例:把wtc中的內容穿插到wxpp中的第四行後面

         wKiom1buV8KDw5TiAAAktqPHatM606.png


     =:把匹配到的行前面加上行數

      例:給fstab中以UUID開頭的行註明是第幾行

        wKiom1buWQ_zD1_uAAAtX1jGHlo251.png

   

     !:條件取反(寫在模式後面)

      例:刪除fstab下面以非#開頭的行

       wKiom1buWhDDRZFqAAA7zNH36A8929.png



      s///:查找替換。其分隔符可以自行制定,常用的有s@@@、s###等。

      例:刪除fstab文件中以#號開頭的行。(把#號替換成什麼都沒有)

       wKioL1buXzKhEA2tAAAqoVNVM34331.png

        

    

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章