Linux 命令之三 sed 命令
Sed 命令簡介
===========
sed(stream edit)作爲流編輯器是逐行處理的,默認將處理結果寫出到屏幕(stdout),並不會修改源文件。在工作中是一個非常實用的文本編輯工具。
sed 工作模式
-
將文件以行爲基本單位讀入到內存中
-
使用 sed 指定的匹配動作對每一行進行處理
-
處理完成後進行輸出,直到處理完最後一行結束,並不修改原文件內容
基本語法如下:
sed [選項] '[定位符]處理動作' filename
sed 常用選項
-
n:靜默模式
-
f:指定 sed 腳本
-
i:直接修改源文件內容
-
e:指定 sed 動作,支持指定多個
-
r:啓用擴展正則表達式
sed 常用動作命令
-
s:替換匹配內容
-
d:刪除匹配內容
-
c:改變匹配內容
-
i:在匹配行前插入指定內容
-
a:在匹配行後追加指定內容
sed 標誌位
-
g:匹配全局,也可以指定數字,表示匹配第幾次出現
-
p:打印匹配動作處理的項,可以和選項 - n 一起搭配使用只輸出被 sed 處理過的行
-
w file:匹配處理行寫入指定文件
sed 使用示例
sed 替換操作
# 先查看示例文件內容
% cat test.txt
root:*:0:0:System Administrator:/var/root:/bin/sh
# 替換文本中第一次出現的root爲aboboo
% sed 's/root/aboboo/' test.txt
aboboo:*:0:0:System Administrator:/var/root:/bin/sh
# 替換文本中第二次出現的root爲aboboo,如果想替換第三次或者第四次,其實寫上對應的數字即可
% sed 's/root/aboboo/2' test.txt
root:*:0:0:System Administrator:/var/aboboo:/bin/sh
# 全局替換,替換行中出現的所有root爲aboboo
% sed 's/root/aboboo/g' test.txt
aboboo:*:0:0:System Administrator:/var/aboboo:/bin/sh
sed 刪除操作
# 先查看示例文件內容
% cat d.txt
1a
2b
3c
4d
5e
6f
# 在輸出結果中刪除2-4行,不修改原文件
% sed '2,4d' d.txt
1a
5e
6f
# 刪除匹配a的行
% sed '/a/d' d.txt
2b
3c
4d
5e
6f
# 在輸出結果中打印行號
% sed '2,4d;=' d.txt
1
1a
5
5e
6
6f
sed 修改操作 (c,i,a)
這裏需要注意下,在 MacOS 這三個命令默認只想會報錯哦。
# 先查看示例文件內容
% cat d.txt
1a
2b
3c
4d
5e
6f
% sed '/a/c change' d.txt
change
2b
3c
4d
5e
6f
% sed '/a/i change' d.txt
change
1a
2b
3c
4d
5e
6f
% sed '/a/a change' d.txt
1a
change
2b
3c
4d
5e
6f
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/HC0GNofHXncI_zed2c-y4Q