熱門分類
載入中…
目錄0%

🧰 Linux sed 使用基礎說明:文字取代、刪除與常用範例

    🧰 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
    

    🔗 七、延伸閱讀

    — WWFandy・Linux 系統與命令筆記

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級