sed(意爲流編輯器,源自英語“stream editor”的縮寫)是Unix常見的命令行程序。sed 用來把文檔或字符串裏面的文字經過一系列編輯命令轉換爲另一種格式輸出。sed 通常用來匹配一個或多個正則表達式的文本進行處理。
分號(;)可以用作分隔命令的指示符。儘管sed腳本固有的很多限制,一連串的sed指令加起來可以編程像 倉庫番、快打磚塊、甚至俄羅斯方塊等電腦遊戲的複雜程序。
常用的sed命令
- /模式/p - 印出所有匹配“模式”的行
- /模式/d - 刪除所有匹配“模式”的行
- s - 替換字符串
-
- s/模式/替換文字/ - 將匹配“模式”的行轉換成“替換文字”
- s命令預設只替換每行匹配的第一串文字,也就是說,若每行裏有多個匹配該模式的字符串,後面的將不會被s轉換。在這個情況可以用g命令來替換所有匹配的文字,如下:
- s/模式/替換文字/g - 將所有匹配“模式”的字符串轉換成“替換文字”
命令行選項
- -f - 按照指定的sed腳本里面的命令來進行轉換
- -i - 表示將轉換結果直接插入文件中(若不用-i,一般sed命令不會改變原文檔裏的內容,而只會輸出到命令行。當然命令行輸出的內容也可以用“>”轉存到另外一個文件裏。)
- -e - 表示在e後面的文字是正則表達式。有的版本不需要加註e選項也同樣可以在命令中使用正則表達式。
其他命令
- sed G - 在每一行後面增加一空行
- sed 'G;G' - 在每一行後面增加兩行空行