文本處理工具之---sed

sed,Stream editor的縮寫,功能很強大,能夠進行文本替換刪除打印等,與grep、awk不一樣的是,它側重點在於整行的編輯;正則表達式

它的工做過程是,首先將文件分紅以行爲單位,而後將每一行逐次的放入緩衝區(模式空間),sed將其處理完畢後發送到標準輸出,處理完最後一行sed便運行結束。因爲sed是對存儲在緩衝區的文件進行輯,所以,sed不會修改或者損壞正在編輯的文件。express


sed的用法: sed [OPTION]... 'script' [input-file]...less


sed的選項參數比較少,主要有這麼幾個:ide

  -n, --quiet,--silent:對不能匹配模式的行,默認不輸出到屏幕ui

  -e script, --expression=script:多條件編輯spa

  -f,script-file, --file=script-file:從指定的script-file中讀取腳本regexp

      注意:最好用絕對路徑ip

  -i[SUFFIX],--in-place[=SUFFIX]:在原文件直接進行編輯操做  不要輕易用input

  -r, --regexp-extended:使sed支持擴展正則表達式it


處理命令Command:

不一樣於grep的pattern,這裏command不只包含了正則表達式所匹配的模式,並且還包含了對匹配進行處理的命令。同時,sed的匹配是以‘/’開頭和結尾的,中間包含着對文本的匹配模式,如/^less/就是匹配全部以less開頭的行。而在匹配以後跟着的是對匹配結果的處理命令,例如/^less/d就是將全部以less開始的行刪除;

命令有以下幾個:

    =:顯示被模式匹配的行的行號

      例如:sed -n '/^$/=' /etc/grub2.cfg

     a \text 追加

     i \text 插入

     c \text 替換

     d  在模式空間中刪除被模式匹配的行;因此這樣的行不能再進行標準輸出

        注意:使用d命令的時候不要使用-n選項;

     p:顯示模式空間中被模式匹配的行

          注意:一般搭配-n選項

     w filename:把匹配到的行另存到一個文件中

     r filename:將這個文件的內容追加到模式空間中被模式匹配的行以後

     !Command:在模式空間中被模式匹配的行

     s///:查找替換,分隔符能夠任意更換,只要相同就能夠

     s@@@,s###,s,,, ...

     s/pattren/text/[control]

      例如:sed s@/etc/fstab@/etc/mtab@

      pattren

      text:要替換成的內容,純文本

      control:如何進行替換

        g:行內所有替換

        p:顯示替換成功的行

        w file:保存到

舉例:

刪除包含root的行

sed '/root/d' file


刪除從root行開始到whj行結束之間全部的行

# sed '/root/,/whj/d' file


刪除第1行到第5行之間全部的行

# sed '1,5d' file


刪除全部不包含Sam的行

# sed '/Sam/!d' file


將包含Sam行的love改爲hate

# sed '/Sam/s/love/hate/g' file


刪除每行後三個字符

# sed 's/...$//' file

相關文章
相關標籤/搜索