🧰 Linux sed 使用基礎說明:文字取代、刪除與常用範例
更新日期:2025 年 10 月 22 日 | 作者:WWFandy
💡 一、什麼是 sed?
sed(Stream Editor) 是 Linux 中的文字串流編輯器, 可在不打開檔案的情況下,直接對文字進行取代、刪除、插入等操作。 它在系統自動化、批次處理與 log 清理中特別實用。
- 📄 適用場景:大量文字檔批次處理
- 🔄 核心功能:取代(substitute)、刪除(delete)、插入(insert)
- ⚙️ 支援正規表示式(Regex)操作
🧰 二、基本語法
sed [選項] '命令' 檔案
最常見的命令是 s(substitute),用於文字取代:
sed 's/原文字/新文字/' 檔案
s:取代命令(substitute)/:分隔符g:全域取代(global)i:不分大小寫
💡 例:將「apple」取代為「banana」sed 's/apple/banana/g' fruits.txt
✏️ 三、常用取代操作
1️⃣ 單一取代
sed 's/linux/Linux/' file.txt
僅取代每行的第一個「linux」。
2️⃣ 全域取代
sed 's/linux/Linux/g' file.txt
取代每行中所有的「linux」。
3️⃣ 忽略大小寫
sed 's/linux/Linux/gi' file.txt
同時匹配「Linux」「LINUX」「linux」。
🧽 四、文字刪除與篩選
1️⃣ 刪除特定行
sed '3d' file.txt
刪除第三行。
2️⃣ 刪除含特定字串的行
sed '/error/d' log.txt
刪除所有包含「error」的行。
3️⃣ 保留匹配的行(取代 grep 效果)
sed -n '/success/p' log.txt
僅顯示包含「success」的行。
⚙️ 五、進階應用技巧
1️⃣ 同時進行多個取代
sed -e 's/cat/dog/g' -e 's/mouse/rabbit/g' animals.txt
2️⃣ 直接修改原檔(in-place)
sed -i 's/old/new/g' file.txt
直接覆蓋原始檔案。
3️⃣ 刪除空白行
sed '/^$/d' text.txt
4️⃣ 顯示指定範圍行
sed -n '10,20p' file.txt
🔍 六、結合正規表示式範例
使用 Regex,可進行更靈活的模式處理:
# 將開頭為 "test" 的行加上前綴 sed 's/^test/[Prefix] test/' sample.txt # 移除每行結尾的分號 sed 's/;$//' code.txt # 將多個空白取代為單一空白 sed 's/[[:space:]]\+/ /g' file.txt
🔗 七、延伸閱讀
- 📁 Linux ls 指令使用教學:檔案列表與排序技巧
- 🔒 Linux 權限操作教學:rwx、chmod、chown 完整說明
- ⚙️ Linux 效能監控與瓶頸分析:top、htop、iotop、nmon 實戰
— WWFandy・Linux 系統與命令筆記
沒有留言: