sed簡介及常見用法

sed是一個文本流處理器,配合正則表達式用可以實現很多文本處理操作。

和grep一樣,sed是一行一行的處理的。sed處理文本時,首先會將源文件復制一份到內存中,然后將文本一行一行拿到模式空間內進行操作,最后輸出到標準輸出,即屏幕上。

在模式空間中,每一行都會根據用戶給的條件進行匹配,匹配到了進行編輯后輸出,沒有匹配到,直接輸出到標準輸出。sed除了模式空間還有一個保持空間,能夠讓行在模式空間和保持空間多次進行處理,進而完成復雜的處理工作。

sed [option]...'script' [input-file]...
    script:
        地址定界、編輯命令
    常用選項:
        -n, --quiet, --slient:不輸出模式空間中的內容到屏幕,也就是默認
            suppress automatic printing of pattern space:自動不輸出模式空間中的內容
        -e script, --expression=script:添加可執行的腳本,用腳本來處理文本,多點編輯
            add the script to the commands to be executed.
        -f script, --expression=script:
            add the contents of script-file to the commands to be executed
        -r. --regxp-extended:支持使用擴展正則表達式
        -i[SUFFIX], --in-place[=SUFFIX]:直接編輯源文件
    地址定界:
        1.空地址:全文處理
        2.單地址:
            # :第#行
            /patter/ :被此模式匹配到的每一行
        3.地址范圍:
            #,# :
            #,+# :從第#行開始的第#行
            #,/pat1/ :從第#行開始,到第一次匹配到模式的行
            /pat1/,/pat2/ :從/pat1/到/pat2/
        4.步進:~
            1~2:所有奇數行

    編輯信息(COMMANDS):
    除了用d模式,都用上-n選項
        d :將匹配到的行刪除;
        p :print the current pattern space
            輸出當前模式空間中的內容
        a \text:
            append text, which has each embedded newline preceded by a backslash
            追加新行,反斜線前的范圍內每一行后都追加新的一行。可以用\n實現多行追加
        i \text:
            insert text,which has each embedded newline preceded by a backslash
            插入新行,反斜線前指范圍內每一行前插入新的一行??梢杂肻n實現多行追加
        c \text:
            replace the selected lines with text,which has each embedded newline preceded by a backlash.
            將指定的行更換文本,~。~
        w /path/to/somefile:
            write the current pattern space to filename
            保存模式空間匹配到的行至指定的文件中;
        r /path/to/somefile:
            append text read from filename
            文件合并
        = :為模式匹配到的行打印行號
        ! :條件取反,在COMMAND前用;
            地址定界!編輯命令
        s/// :查找替換,其分隔符可自行指定,常用 s@@@,s###等
            替換標記:
                g :全局替換
                W /path/to/somefile:將替換成功的結果保存至指定文件中;
                P :顯示替換成功的行

在hold space(保持空間)中還有一些高級命令:

高級編輯命令:
    h H    copy/append pattern space to hold space.
    g G    Copy/append hold space to pattern space.
    x      Exchange the contents of the hold and pattern spaces.
    n N    Read/append the next line of input into the pattern space.
    d      Delete pattern space.  Start next cycle.
    D      If  pattern  space contains no newline, start a normal new cycle as if the d command was issued. 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90827

(0)
耗奇害死貓耗奇害死貓
上一篇 2018-01-04
下一篇 2018-01-04

相關推薦

  • 網絡管理之配置文件及一些命令的應用

    IP配置、信息、相關命令    IP地址     它們可唯一標識 IP 網絡中的每臺設備     每臺主機(計算機、網絡設備、外圍設備)必須具有唯一的地址     IP 地址由兩部分組成:   &nb…

    Linux干貨 2016-09-22
  • echo address

    echo address

    Linux干貨 2016-08-08
  • Bind編譯安裝詳解

    Bind編譯安裝詳解 Bind是一款開放源碼的DNS服務器軟件,由美國加州大學Berkeley分校開發和維護的,全名為Berkeley Internet Name Domain它是目前世界上使用最為廣泛的DNS服務器軟件,支持各種unix平臺和windows平臺?,F今互聯網上最常使用的DNS服務器軟件,使用BIND作為服務器軟件的DNS服務器約占所有DNS服…

    Linux干貨 2016-07-22
  • 使用monit搭建一個監控系統

     上周用monit搭建或者說定制了一個監控系統,來監控服務器發生事情。當然了主要是監控異常,因為我們的產品屬于服務器類型,很多進程都daemon,要不停的運行。我們搭建監控目的不過是出現問題能夠及時的知道,平時可從web UI上看到整個系統的狀況,同時它本身要輕量級,不要影響性能。當然了類似的產品很多了,比如Ganglia,我在老科長波哥曾經搭建過…

    Linux干貨 2015-02-15
  • HA Cluste 的配置:keepalived:vrrp協議 雙主模型

    keepalived:vrrp協議 雙主模型 第一步配置出始環境: 準備兩節點: 主節點:172.18.57.7 long1 備節點:172.18.57.8 long2 (1) 各節點時間必須同步; 同步時間: ~]# yum -y install chrony ~]# vim /etc/chrony.conf ~]# systemctl start chr…

    Linux干貨 2017-05-15
  • read,locate ,find 的總結及相關聯系

    read 變量名 read 變量名1 [變量名2] < 文件名不支持管道read 變量名1 [變量名2] <<< “值1 [值2] …”使用read來把輸入值分配給一個或者多個shell變量     -p 指定要顯示的提示     # read -p…

    Linux干貨 2017-08-12

評論列表(1條)

  • 馬哥教育
    馬哥教育 2018-01-07 18:02

    博文內容上簡單了點,sed還是有蠻多知識可以總結的~可以擴充一下,繼續加油哈~

欧美性久久久久