Linux 中的 sed 命令是一個功能強大的流編輯器,可讓您對輸入流(檔案或來自管道的輸入)執行基本文字轉換。它廣泛用於搜尋、尋找和取代、插入和刪除文件中的文字。與簡單的文字編輯器不同,sed 在管道中處理數據,對於在 shell 腳本中自動執行文字操作特別有用。
sed 的主要功能包括:
- 使用正規表示式取代文件中的文字。
- 根據特定模式刪除行。
- 將文字插入或附加到特定行。
- 根據複雜的模式轉換或轉換文字。
本指南將提供範例來示範 Linux 中 sed 命令的實際使用,以展示如何將其用於各種文字處理任務。
Sed 指令的關鍵語法和選項
在深入研究範例之前,掌握 sed 指令的主要語法至關重要:
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
以下是一些常用的選項:
- -e:允許使用多個指令。
- -n:列印每一行時禁止預設行為。
- -i:就地編輯文件(請小心,因為它會修改原始文件)。
Linux 中 Sed 指令的基本範例
基本文字替換
sed 最常見的用途之一是替換文字。
echo "Welcome to Linux" | sed 's/Linux/Unix/'
輸出:
Welcome to Unix
全球替代
預設情況下,sed 會取代一行中的第一個符合項目。若要取代所有出現的情況,請使用“g”標誌。
echo "Apples are better than apples" | sed 's/apples/oranges/g'
輸出:
Apples are better than oranges
行刪除
sed 也可以根據特定模式刪除行。
echo -e "apple\norange\nbanana" | sed '/orange/d'
輸出:
apple
banana
插入和附加文本
您可以在模式匹配之前或之後引入新的文字行。
echo "Hello" | sed 'i\Good Morning'
輸出:
Good Morning
Hello
更改文字大小寫
使用 sed,您可以使用 y 函數來操作文字大小寫。讓我們來看一個將小寫轉換為大寫的範例:
echo "hello world" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
輸出:
HELLO WORLD
Linux 中 Sed 指令的高階用法
多模式文字替換
對於多種模式,您可以使用 -e 來連結各種替換命令。
echo "Welcome to Linux. I love Linux." | sed -e 's/Linux/Unix/' -e 's/love/adore/'
輸出:
Welcome to Unix. I adore Linux.
條件文字替換
使用 sed,可以根據某些條件使用地址替換文字。
echo -e "apple\nbanana\ncherry" | sed '/banana/s/$/ - favorite fruit/'
輸出:
apple
banana - favorite fruit
cherry
將 Sed 與正規表示式結合使用
利用正規表示式的強大功能來匹配複雜的模式。
echo "Price is $100" | sed 's/$[0-9]*/& (USD)/'
輸出:
Price is $100 (USD)
複雜替換的反向引用
反向引用可用於向後引用匹配模式的部分。
echo "The white cat and black dog" | sed 's/\(white\|black\) \(cat\|dog\)/\2 \1/'
輸出:
The cat white and dog black
使用 -i 選項就地編輯
sed 的強大功能之一是能夠直接編輯文件。這可以使用 -i 選項來實現,但在進行任何直接修改之前始終備份原始檔案。
echo "Original text" > temp.txt
sed -i 's/Original/Modified/' temp.txt
cat temp.txt
輸出:
Modified text
結論
理解和掌握 sed 命令可以顯著增強您在 Linux 中操作和處理文字檔案的能力。透過練習提供的範例,您可以了解如何有效處理常見的文字處理任務、自動執行重複的編輯作業以及將 sed 合併到腳本工作流程中。定期嘗試不同的 sed 選項和命令將加深您的知識並使您能夠充分利用其潛力。享受 sed 為您的 Linux 文字處理任務帶來的多功能性和強大功能。