天天看點

Shell腳本之sed編輯器sed編輯器

sed

  • sed編輯器
    • sed的工作流程
    • 指令格式
    • 常用選項
    • 常用操作

sed編輯器

sed是一種流編輯器,在編輯器處理資料之前基于預先提供的一組規則來編輯資料流

sed編輯器可以根據指令來處理資料流中的資料,這些指令要麼從指令行中輸入,要麼存儲在一個指令文本檔案中

sed的工作流程

讀取: sed從輸入流(檔案、管道、标準輸入)中讀取一行内容并存儲到臨時的緩沖區中(又稱模式空間, pattern space)

執行:預設情況下,所有的sed指令都在模式空間中順序地執行,除非指定了行的位址,否則sed指令将會在所有的行上依次執行。

顯示:發送修改後的内容到輸出流。在發送資料後,模式空間将會被清空。

在所有的檔案内容都被處理完成之前,上述過程将重複執行,直至所有内容被處理完。

指令格式

sed -e '操作' 檔案1 檔案2 ...  
sed -n-e '操作' 檔案1 檔案2..        不輸出結果
sed -f 腳本檔案 檔案1 檔案2...       執行指令
sed -i -e '操作' 檔案1 檔案2...     對文本進行修改
sed -e 'n{

操作1
操作2
...
}' 檔案1 檔案2...
           

常用選項

-e / --expression= 表示用指定指令來處理輸入的文本檔案,隻有一個操作指令時可省略,一般在執行多個操作指令使用
-f / --file= 表示用指定的腳本檔案來處理輸入的文本檔案
-h / --help 顯示幫助
-n,–quiet / silent 禁止sed編輯器輸出,但可以與p指令一起使用完成輸出
-i 直接修改目标文本檔案

常用操作

s 替換,替換指定字元
d 删除,删除標明的行
a 增加,在目前行下面增加一行指定内容
i 插入,在標明行上面插入一行指定内容
c 替換,将標明行替換為指定内容
y 字元轉換,轉換前後的字元長度必須相同
p 列印,如果同時指定行,表示列印指定行:如果不指定行,則表示列印所有内容;如果有非列印字元,則以ASCII碼輸出。其通常與"-n"選項一起使用
= 列印行号
l 列印資料流中的文本和不可列印的ASCIl字元(比如結束符$、制表符\t)