linux:三劍客老二sed

我們知道,vim 採用的是交互式文本編輯模式,你可以用鍵盤命令來交互性地插入、刪除或替換數據中的文本。但 sed 命令卻不同,它採用的是流編輯模式,最明顯的特點是,在 sed 處理數據之前,需要預先提供一組規則,sed 會按照此規則來編輯數據
大致規則如下:
1、每次僅讀取一行內容
2、根據提供的規則命令匹配並修改數據。注意,sed 默認不會直接修改源文件數據,而是會將數據複製到模式空間中,修改也僅限於模式空間中的數據
3、將執行結果輸出,當一行數據匹配完成後,它會繼續讀取下一行數據,並重復這個過程,直到將文件中所有數據處理完畢
在這裏插入圖片描述

選項 作用
- n 取消默認輸出
- i 直接修改文件內容,而不是輸出到終端
- e 允許多項
- r 支持擴展正則

sed 特有子命令

選項 作用
s 替換
g 全局
p 打印
d 刪除
a 追加,多少行後
i 插入,多少行後
c 取代
取反

示例:
1、把網卡信息中ip取出

[root@yu zy]# ip a s ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:0b:67:f6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::ae63:3bd2:b1a7:f2aa/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@yu zy]# ip a s ens33 | sed -rn '3s#^.*inet (.*)/24 .*$#\1#gp'
10.0.0.200

2、刪除指定行信息

[root@yu zy]# cat 123.txt 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
2222222
BOOTPROTO=none
[root@yu zy]# sed '2d' 123.txt 
TYPE=Ethernet
BROWSER_ONLY=no
2222222
BOOTPROTO=none

3、追加和插入

[root@yu zy]# cat 123.txt 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
2222222
BOOTPROTO=none
[root@yu zy]# sed '2a 2222' 123.txt 
TYPE=Ethernet
PROXY_METHOD=none
2222
BROWSER_ONLY=no
2222222
BOOTPROTO=none
[root@yu zy]# sed '2i 2222' 123.txt 
TYPE=Ethernet
2222
PROXY_METHOD=none
BROWSER_ONLY=no
2222222
BOOTPROTO=none
[root@yu zy]# sed '2c 123123123' 123.txt 
TYPE=Ethernet
123123123
BROWSER_ONLY=no
2222222
BOOTPROTO=none
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章