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 [選項] '指令' [檔案...]
sed -f 腳本檔 [檔案...]

核心指令集

指令功能範例
s/舊/新/單行首次取代sed 's/tiger/wolf/'
s/舊/新/g全域取代(同行所有)sed 's/Tuesday/Thursday/g'
-e 'cmd1' -e 'cmd2'多指令執行sed -e 's/a/b/' -e 's/c/d/'
'cmd1; cmd2'分號分隔多指令(推薦)sed 's/a/b/; s/c/d/'
/pattern/ s/舊/新/條件取代(符合 pattern 行)sed '/two/ s/1/2/'
N,M s/舊/新/限定行號範圍sed '5,6 s/1/2/'
-n + p僅輸出被修改/符合的行sed -n '/two/ s/1/2/p'
d刪除行sed '/^$/d' 刪除空行
y/來源/目標/字元轉換sed 'y/abc/ABC/'

實戰範例專區

1. 基本取代與全域旗標

echo "The tiger cubs meet Tuesday" | sed 's/tiger/wolf/'
# The wolf cubs meet Tuesday

echo "Tue Tue" | sed 's/Tue/Thu/g'
# Thu Thu

2. 多指令組合

echo "tiger after" | sed 's/tiger/wolf/; s/after/before/'
# wolf before

3. 條件式取代

cat sample_one
one 1
two 1
three 1

sed '/two/ s/1/2/; /three/ s/1/3/' sample_one
# one 1
# two 2
# three 3

4. 腳本檔應用(複雜/重複性工作)

cat > sedlist << 'EOF'
/two/ s/1/2/
/three/ s/1/3/
EOF

sed -f sedlist sample_one

5. 限制行號範圍

sed '5,6 s/1/2/' sample_one  # 僅第 5-6 行執行取代

6. 靜默模式配合列印(-n + p)

# 僅顯示被修改的行
sed -n '/two/ s/1/2/p' sample_one
# two 2

# 擷取特定行區間(如第 2-6 行)
sed -n '2,6p' sample_one

7. 就地修改檔案(-i)

sed -i 's/old/new/g' file.txt      # 直接修改原檔
sed -i.bak 's/old/new/g' file.txt  # 備份原檔為 file.txt.bak

進階技巧

  • 分隔字元可自訂:s|/usr/local|/opt|g 避免斜線衝突。
  • & 代表被比對的整串:s/root/&_user/ → root_user。
  • 搭配正則捕捉群組:s/\([0-9]*\)\.\([0-9]*\)/\2.\1/ 交換小數點前後。
  • 處理不可列印字元請改用 tr。

sed vs awk 選擇指南

  • sed:行導向、簡單取代/刪除/擷取、效能極佳。
  • awk:欄位導向、複雜邏輯運算、報表產生、程式語言特性強。
Copyright © Windows教程網 All Rights Reserved