Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux sed 指令新增字串實戰:行首、行尾、指定行、模式匹配四大場景全解析

編輯:關於 Linux

sed(Stream Editor)是 Linux 最強大的串流編輯器之一,善於對文字進行行級別的增、刪、改、查。本文聚焦於「新增字串」場景,詳細解析在行首、行尾、指定行號、模式匹配前後插入字串的語法與實戰技巧。

sed 範例輸出

核心語法:s 命令與插入命令

場景一:每行行首插入字串

# 方法 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

關鍵符號與參數說明

命令用途範例
s/舊/新/替換(可用於插入)sed 's/^/HEAD/' file
i\文字在匹配行之前插入新行sed '/pattern/i\NEW LINE' file
a\文字在匹配行之後插入新行sed '/pattern/a\NEW LINE' file

進階範例:多重操作組合

# 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\   
						
Copyright © Windows教程網 All Rights Reserved
符號/參數含義
^行首錨點
$行尾錨點
g全域替換(每行所有匹配),預設僅第一個
-i直接修改檔案(in-place),建議搭配備份 -i.bak
-n抑制預設輸出,配合 p 命令列印特定行
-e多重編輯指令 sed -e 'cmd1' -e 'cmd2'