文本處理三劍客之sed

文本處理三劍客之sed

一、處理文本的工具sed

概念:

Stream EDitor, 行編輯器 v

sed是一種流編輯器,它一次處理一行內容。處理時,把 當前處理的行存儲在臨時緩沖區中,稱為“模式空間”( pattern space),接著用sed命令處理緩沖區中的內容 ,處理完成后,把緩沖區的內容送往屏幕。接著處理下一 行,這樣不斷重復,直到文件末尾。文件內容并沒有改變 ,除非你使用重定向存儲輸出。Sed主要用來自動編輯一 個或多個文件,簡化對文件的反復操作,編寫轉換程序等

 

二、sed工具

用法:

    sed [option]… 'script' inputfile… v

常用選項:

        -n:不輸出模式空間內容的自動打印

        -e: 多點編輯

        -f /PATH/TO/SCRIPT_FILE: 從指定文件中讀取編輯腳本

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

        -i: 原處編輯 v

script:

      '地址命令'

 地址定界:

     (1) 不給地址:對全文進行處理

     (2) 單地址:

                #: 指定的行

                /pattern/:被此處模式所能夠匹配到的每一行   

     (3) 地址范圍:

                 #,#

                 #,+#

                 /pat1/,/pat2/

                  #,/pat1/

     (4) ~:步進

               1~2 奇數行

               2~2 偶數行

v

三、編輯命令

        d: 刪除模式空間匹配的行

        p: 顯示模式空間中的內容

        a \text:在行后面追加文本;支持使用\n實現多行追加

        i \text:在行前面插入文本;支持使用\n實現多行插入

        c \text:替換行為單行或多行文本

        w /path/to/somefile: 保存模式匹配的行至指定文件

        r /path/from/somefile:讀取指定文件的文本至模式空 間中匹配到的行后

        =: 為模式空間中的行打印行號

        !:模式空間中匹配行取反處理

        s///:查找替換,支持使用其它分隔符,s@@@,s### v

 

 替換標記:

         g: 行內全局替換

         p: 顯示替換成功的行

         w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

 

四、sed示例

v    sed ‘2p’  /etc/passwd v

      sed –n ‘2p’ /etc/passwd v

      sed –n ‘1,4p’ /etc/passwd v

      sed –n ‘/root/p’  /etc/passwd v

      sed –n ‘2,/root/p’  /etc/passwd 從2行開始 v

      sed -n ‘/^$/=’  file 顯示空行行號 v

      sed –n –e ‘/^$/p’ –e ‘/^$/=’  file v

      sed ‘/root/a\superman’  /etc/passwd行后 v

      sed ‘/root/i\superman’ /etc/passwd 行前 v

      sed ‘/root/c\superman’ /etc/passwd 代替行

v    sed ‘/^$/d’ file

    vsed ‘1,10d’   file v

      nl /etc/passwd |sed ‘2,5d’ v

      nl /etc/passwd | sed ‘2a tea’ v

      sed 's/test/mytest/g' example v

      sed –n‘s/root/&superman/p’ /etc/passwd 單詞后 v

      sed –n‘s/root/superman&/p’ /etc/passwd 單詞前 v

      sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets  v

      sed –i.bak  ‘s/dog/cat/g’ pets

 

 

 五、高級編輯命令:

     h: 把模式空間中的內容覆蓋至保持空間中

     H:把模式空間中的內容追加至保持空間中

     g: 從保持空間取出數據覆蓋至模式空間

     G:從保持空間取出內容追加至模式空間

     x: 把模式空間中的內容與保持空間中的內容進行互換

     n: 讀取匹配到的行的下一行覆蓋至模式空間

     N:追加匹配到的行的下一行至模式空間

     d: 刪除模式空間中的行

     D:刪除當前模式空間開端至\n的內容(不在傳至標準輸 出),放棄之后的命令,但是對剩余模式空間重新執行sed

 

六、sed示例 :v

      sed -n 'n;p' FILE v

      sed '1!G;h;$!d' FILE v

      sed '$!N;$!D' FILE v

      sed '$!d' FILE v

      sed ‘G’ FILE v

      sed ‘g’ FILE v

      sed ‘/^$/d;G’ FILE v

      sed 'n;d' FILE v

      sed -n '1!G;h;$p' FILE

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

(0)
xiaoqiang512xiaoqiang512
上一篇 2016-08-12 09:01
下一篇 2016-08-12 09:01

相關推薦

  • LVS的四種模型

    相關術語: vs:Virtual Server,Director,Dispatcher,Balancer rs:Real Server,upstream server,backend server lvs集群的類型: lvs-nat:修改請求報文的目標IP lvs-dr:操作封裝新的MAC地址; lvs-tun:在原請求IP報文之外新加一個IP首部; lvs…

    Linux干貨 2016-10-30
  • MySQL 字符集亂碼及解決方案

    1、簡介         字符集是一套符號和編碼的規則,不論是在oracle數據庫還是在mysql數據庫,都存在字符集的選擇問題,而且如果在數據庫創建階段沒有正確選擇字符集,那么可能在后期需要更換字符集,而字符集的更換是代價比較高的操作,也存在一定的風險,所以,我們推薦在應用開始階段,就按…

    Linux干貨 2015-09-27
  • 20160803作業-用戶組和權限管理

    http://note.youdao.com/yws/public/redirect/share?id=46f06331b737c6d08a0e8c9c3d49ac9e&type=false

    Linux干貨 2016-08-08
  • 08.04 筆記總結

    1.ps axo  user,ruser,group,rgroup,cmd  //  ruser  表示程序發起的用戶,一般是指系統當前的用戶  //  user  表示程序的所有者。在大數情況下,兩個用戶都是系統當前的用戶, 之后當程序被賦予suid的時候,可能user會發生變化。 2.…

    Linux干貨 2016-08-08
  • python知識點

    #ipython的使用## 幫助功能?:Ipython的概述和簡介help(name):查詢指定名稱的幫助obj?:列出obj對象的詳細信息obj??:列出更加詳細信息 ## 特殊變量_ :表示前一次的輸出__:倒數第二次輸出___:倒數第三次輸出_dh:目錄歷史_oh:輸出歷史 ## shell命令!command 執行shell命令!ls -l!touc…

    Linux干貨 2017-10-03
  • vim基本總結

    ASCII可以將計算機存儲的0或1轉成我們認識的文字。在Linux中,絕大部分的配置文件都是以ASCII的純文本形態存在。通過文本編輯器,可以實現對這些文本文件的更改。常風的文本編輯器有emacs, pico,nano,joe與vi(vim是vi的升級版)等。那么為會么要學vi呢? l 因為vi是內置編輯器,系統安裝好就有了 l 很多軟件…

    2017-08-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-12 12:27

    對sed的工作原理可以通過圖片來顯示,這樣看起來就更直觀了,對地址定界應該表述清楚,而不是簡單的粘貼筆記。

欧美性久久久久