sed 是強大的行導向文本處理工具,支援正則運算式。本文整理常用選項、核心指令與豐富實例。

-n:靜默模式,僅輸出經處理的行 (配合 p 指令)。-e:直接在命令列指定編輯指令。-f:從檔案讀取指令腳本。-r:使用擴展正則 (ERE)。-i:直接修改原檔案 (慎用)。| 指令 | 功能 |
|---|---|
| a | 行後新增字串 |
| c | 行範圍取代為字串 |
| d | 刪除行 |
| i | 行前插入字串 |
| p | 列印行 (常與 -n 同用) |
| s | 替換 (支援正則與 g 全域旗標) |
sed '1d' ab # 刪除第 1 行
sed '$d' ab # 刪除最後一行
sed '1,2d' ab # 刪除第 1-2 行
sed '2,$d' ab # 刪除第 2 行至末尾
sed -n '1p' ab # 顯示第 1 行
sed -n '$p' ab # 顯示最後一行
sed -n '1,2p' ab # 顯示第 1-2 行
sed -n '2,$p' ab # 顯示第 2 行至末尾
sed -n '/ruby/p' ab # 含 ruby 的行
sed -n '/\$/p' ab # 含 $ 的行 (需轉義)
sed '1a drink tea' ab # 第 1 行後新增
sed '1,3a drink tea' ab # 第 1-3 行後各新增
sed '1a drink tea\nor coffee' ab # 第 1 行後新增多行 (\n 換行)
sed '1c Hi' ab # 第 1 行替換為 Hi
sed '1,2c Hi' ab # 第 1-2 行合併替換為單行 Hi
sed -n '/ruby/p' ab | sed 's/ruby/bird/g' # ruby → bird
sed -n '/ruby/p' ab | sed 's/ruby//g' # 刪除 ruby
sed -i '$a bye' ab
sed 處理列能力強於 awk,適合行導向批次編輯任務。