| 命令 | 用途 | 範例 |
s/舊/新/ | 替換(可用於插入) | sed 's/^/HEAD/' file |
i\文字 | 在匹配行之前插入新行 | sed '/pattern/i\NEW LINE' file |
a\文字 | 在匹配行之後插入新行 | sed '/pattern/a\NEW LINE' file |
場景一:每行行首插入字串
# 方法 1:s 命令替換行首錨點 ^
sed 's/^/HEAD/' test.file
# 方法 2:i 命令(插入新行,非行內插入)
sed '1i\HEADER' test.file # 僅第一行前插入新行
輸出:
HEADline 1
HEADline 2
HEADline 3
場景二:每行行尾插入字串
# s 命令替換行尾錨點 $
sed 's/$/TAIL/' test.file
輸出:
line 1TAIL
line 2TAIL
line 3TAIL

場景三:指定行號插入
# 第 3 行前插入新行
sed '3i\INSERT BEFORE LINE 3' test.file
# 第 3 行後插入新行
sed '3a\INSERT AFTER LINE 3' test.file
# 第 1、3、5 行行首加字串
sed '1,3,5s/^/PRE/' test.file
場景四:模式匹配前後插入
# 包含 "error" 的行之前插入
sed '/error/i\>>> ERROR FOUND <<<' test.log
# 包含 "error" 的行之後插入
sed '/error/a\--- END ERROR ---' test.log
# 匹配行行首/行尾插入(非新行)
sed '/error/s/^/[ERR] /' test.log
sed '/error/s/$/ [END]/' test.log
關鍵符號與參數說明
| 符號/參數 | 含義 |
^ | 行首錨點 |
$ | 行尾錨點 |
g | 全域替換(每行所有匹配),預設僅第一個 |
-i | 直接修改檔案(in-place),建議搭配備份 -i.bak |
-n | 抑制預設輸出,配合 p 命令列印特定行 |
-e | 多重編輯指令 sed -e 'cmd1' -e 'cmd2' |
進階範例:多重操作組合
# 1. 所有行行首加行號格式 "行號: "
sed = test.file | sed 'N;s/\n/: /'
# 2. 在第 2 行後插入標題,所有行行尾加分號
sed -e '2a\=== TITLE ===' -e 's/$/;/' test.file
# 3. 針對特定模式的行做多重處理
sed -e '/TODO/s/^/[TODO] /' -e '/TODO/s/$/ [PENDING]/' -e '/TODO/a\--- NEED REVIEW ---' code.c
實戰應用:處理程式碼/設定檔
# 為所有 .conf 檔案加上註解標頭
find /etc -name "*.conf" -exec sed -i '1i\# Managed by Ansible - DO NOT EDIT MANUALLY' {} \;
# 在 HTML body 結束前插入追蹤碼
sed -i '/<\/body>/i\