欧美亚洲_中文字幕在线看_免费污视频_99福利视频_狠狠干天天操_天天做天天干_老女人丨91丨九色_久久视频这里只有精品_超碰成人av_毛片成人_91欧美日韩_青青操影院_俺也去av_亚洲图片一区二区三区_午夜伦理在线观看_天天毛片_久久国产视频精品_成人久久精品人妻一区二区三区

您現在的位置:新疆網站建設-新疆網站制作-新疆二域設計>> 幫助中心>服務器相關>> Linux命令:sed命令高級用法詳解

Linux命令:sed命令高級用法詳解

作者:管理員  來源:互聯網  發布時間:2025-12-23 10:10:42  點擊數:0

sed(Stream EDitor)是Linux中一個功能強大的流式文本編輯器,它按行處理文本,非常適合文本替換、刪除、插入和轉換等任務。sed是一種流編輯器,它是文本處理中非常強大的工具,能夠完美的配合正則表達式使用,用法簡單實用,非常靈活。


一、基本語法和工作原理


sed [選項] '命令' 文件
sed [選項] -f 腳本文件 文件

工作原理:

讀取文件的一行到模式空間(臨時緩沖區)

執行sed命令處理模式空間的內容

將處理后的內容輸出到標準輸出

重復直到文件結束


二、常用選項


選項說明
-n靜默模式,只顯示處理過的行
-e允許多個命令串聯
-f從腳本文件讀取命令
-i直接修改源文件(危險但實用)
-r使用擴展正則表達式



三、核心命令詳解


1. 替換命令(最常用)

# 基本格式
s/pattern/replacement/flags

# 示例
sed 's/old/new/' file.txt        # 每行第一個old替換為new
sed 's/old/new/g' file.txt       # 全局替換
sed 's/old/new/2' file.txt       # 每行第二個old替換
sed 's/old/new/ig' file.txt      # 忽略大小寫并全局替換
sed 's|/usr/bin|/usr/local/bin|' # 使用不同分隔符


2. 刪除命令


sed '3d' file.txt           # 刪除第3行
sed '1,5d' file.txt         # 刪除1-5行
sed '/pattern/d' file.txt   # 刪除匹配行
sed '/start/,/end/d'        # 刪除start到end之間的行
sed '$d' file.txt           # 刪除最后一行


3. 插入和追加


sed '3i\插入的內容' file.txt      # 在第3行前插入
sed '3a\追加的內容' file.txt      # 在第3行后追加
sed '/pattern/i\插入' file.txt    # 在匹配行前插入
sed '/pattern/a\追加' file.txt    # 在匹配行后追加


4. 打印命令


sed -n '3p' file.txt          # 只打印第3行
sed -n '1,5p' file.txt        # 打印1-5行
sed -n '/pattern/p' file.txt  # 打印匹配行
sed -n '3,5!p' file.txt       # 打印除了3-5行的內容


5. 替換行內容


sed '3c\新行內容' file.txt    # 替換第3行
sed '/pattern/c\新內容' file.txt # 替換匹配行


四、高級功能


1. 地址范圍


sed '10,20s/old/new/g'           # 只在10-20行替換
sed '/start/,/end/s/old/new/g'   # 在匹配范圍替換
sed '5,$s/old/new/g'             # 從第5行到文件末尾


2. 多點編輯


# 多個命令用分號分隔
sed -e 's/old/new/g' -e '/foo/d' file.txt

# 或者
sed 's/old/new/g; /foo/d' file.txt


3. 分組和反向引用


# 使用括號分組,\1、\2引用
sed 's/\([0-9]*\)-\([0-9]*\)/\2:\1/'  # 123-456 → 456:123
sed -r 's/([0-9]*)-([0-9]*)/\2:\1/'   # 擴展正則寫法


4. 保持空間和模式空間


g      # 用保持空間內容替換模式空間
G      # 將保持空間內容追加到模式空間
h      # 用模式空間內容替換保持空間
H      # 將模式空間內容追加到保持空間
x      # 交換兩個空間的內容


五、實用示例


1. 文件操作


# 原地修改文件(先備份)
sed -i.bak 's/old/new/g' file.txt

# 刪除空行
sed '/^$/d' file.txt

# 刪除注釋行和空行
sed -e '/^#/d' -e '/^$/d' file.conf

# 每行行首添加內容
sed 's/^/# /' file.txt

# 每行行尾添加內容
sed 's/$/ --- end/' file.txt


2. 數據處理


# 提取特定行
sed -n '5,10p' data.txt > output.txt

# 替換CSV文件中的分隔符
sed 's/,/|/g' data.csv

# 格式化文本
sed 's/^ *//' file.txt  # 刪除行首空格
sed 's/ *$//' file.txt  # 刪除行尾空格


3. 日志處理


# 提取時間范圍內的日志
sed -n '/2024-01-01 10:00:00/,/2024-01-01 11:00:00/p' app.log

# 刪除包含敏感信息的行
sed '/password/d;/secret/d' log.txt


4. Shell腳本結合


# 在腳本中使用變量
old="foo"
new="bar"
sed "s/$old/$new/g" file.txt

# 處理命令輸出
ps aux | sed '/grep/d' | sed 's/  */ /g'


六、注意事項和技巧


1.特殊字符轉義

# 替換包含斜杠的字符串
sed 's/\/path\/to\/old/\/new\/path/g'  # 繁瑣
sed 's|/path/to/old|/new/path|g'       # 更好

# 替換包含分隔符的字符串
sed 's|/usr/local/bin|/opt/bin|g'


2. 性能優化

# 1. 使用地址限制操作范圍
sed '1,1000s/old/new/g'  # 只在1-1000行操作

# 2. 合并多個命令
sed -e 's/old/new/g' -e '/pattern/d'  # 優于多次調用sed

# 3. 避免不必要的正則表達式
sed 's/old/new/'  # 簡單字符串時不需要正則


3. 調試技巧

# 1. 先測試不使用-i
sed 's/old/new/g' file.txt > test.txt

# 2. 使用l命令查看特殊字符
sed -n '1,5l' file.txt

# 3. 逐步添加復雜表達式
sed 's/pattern/replace/'      # 先測試基礎
sed 's/pattern/replace/g'     # 添加全局標志
sed -r 's/(group)/replace/g'  # 添加正則分組


七、常見問題解決

1.處理大文件

# 使用地址范圍分塊處理
sed -i '1,50000s/old/new/g' bigfile.txt
sed -i '50001,100000s/old/new/g' bigfile.txt


2. 跨行匹配(sed的局限性)

# sed默認不支持跨行匹配,可用以下技巧:
sed ':a;N;$!ba;s/\n/ /g'  # 將多行合并為一行


3. 備份策略

# 總是先備份
cp file.txt file.txt.bak
sed -i 's/old/new/g' file.txt

# 或者使用sed的備份功能
sed -i.bak 's/old/new/g' file.txt


sed雖然強大,但語法有些晦澀。建議:


復雜操作先用簡單文件測試

重要文件操作前一定備份

對于特別復雜的文本處理,考慮awk或Perl

將常用sed命令保存為腳本或別名


關鍵字: Linux命令 sed sed命令

上一篇:在IIS上配置X-Forwarded-For防護
下一篇:Linux命令:ipconfig與ifconfig命令用法及區別

版權所有 新疆二域信息技術有限公司 All Rights Reserved 地址:烏魯木齊市北京南路高新街217號盈科廣場B座615 備案號:新ICP備14003571號-6 新公網安備 65010402000050號