sed概念說明:字符流過濾編輯和文字符流轉(zhuǎn)換工具
文本處理方式:增、刪示括、改铺浇、查。
1垛膝、標(biāo)準(zhǔn)語法格式
# Linux四劍客之find
2鳍侣、常用選項
選項 | 釋義 |
---|---|
-n | 取消默認(rèn)輸出信息 |
-e | 多點編輯 |
-f | 從指定的文件中讀取編輯腳本 |
-r | 支持使用擴(kuò)展正則表達(dá)式 |
-i.bak | 先備份尾xxx.bak 然后修改原文件 |
3丁稀、sed常用指令
指令 | 釋義 |
---|---|
p | 打印模式空間內(nèi)容 |
d | 刪除文件信息指令 |
a | 文件追加信息指令(行后) |
i | 文件追加信息指令(行前) |
c | 把的匹配到的行的內(nèi)容替換掉 |
s | 查找替換,支持使用其他的分隔符倚聚;s@查找的內(nèi)容@替換為的內(nèi)容@ 或 s# # #都可以 |
w | 將顯示的內(nèi)容輸出到指定的文件中 |
r | 將指定的文件插入到匹配到的行的后面 |
= | 為模式空間中的行打印行號 |
! | 线衫! 取反條件 |
4、練習(xí)
(a)惑折、指令p的用法舉例
顯示/etc/fstab下與UUID有關(guān)的行授账。
sed -n '/UUID/p' /etc/fstab
(b)、指令d的用法舉例
刪除/etc/fstab下與UUID有關(guān)的行惨驶。
sed '/UUDI/d' /etc/fstab
刪除/etc/fstab/文件下的空行白热。
sed '/^$/d' /etc/fstab
(c)、指令a的用法舉例
將/etc/fstab文件中敞咧,在UUID開頭的行的后一行棘捣,添加welcome的行。
sed '^UUID/a\welcome' /etc/fstab
(d)休建、指令i的用法舉例
將/etc/fstab文件中UUID開頭的行乍恐,前一行添加welcome的行。
sed '/^UUID/i\welcome' /etc/fstab
(e)测砂、指令c的用法舉例
將/etc/fstab文件中以UUID開頭的行替換為welcome茵烈。
sed '/^UUID/c\welcome' /etc/fstab
將/etc/fstab文件中第9行的內(nèi)容替換為welcome。
sed '9c welcome' /etc/fstab
(f)砌些、指令s的用法舉例
此指令經(jīng)常搭配使用的三個指令
>1)g 實現(xiàn)全局替換呜投。
>2)p 顯示替換成功的行。
>3)w/path/filename 將替換成功的內(nèi)容保存至指定的文件中存璃;
將/etc/fstab文件中大寫的UUID仑荐,替換為小寫的uuid,其他內(nèi)容保持不變纵东。
sed 's/UUID/uuid/g' /etc/fstab
將/etc/fstab文件中首行開頭的UUID替換為UUIDER粘招,其他內(nèi)容保持不變。
sed -rn 's@^(UUID)@\1ER@p' /etc/fstab
(g) 指令w用法舉例
將/etc/fstab中有關(guān)UUID的行寫入到/tmp/UUID 的文件中偎球。
[root@backup ~]# sed -n '/UUID/w/tmp/UUID' /etc/fstab
[root@backup ~]# cat /tmp/UUID
#UUID
UUID=f640a15d-5888-4be9-be3d-d3474bdc2ba3 / xfs defaults 0 0
UUID=a858b3f1-5c99-4776-a591-af00d2dd9346 /boot xfs defaults 0 0
UUID=87ef599b-45f0-46a8-ab5c-38abb4b5e171 swap swap defaults 0 0
[root@backup ~]#
使用ip addr 命令查找IP地址洒扎,并使用sed 命令找出IP后寫入到/tmp/UUID文件中。
[root@backup /temproary/test]# ip add | sed -rn 's@^.*inet (.*)/24 .*@\1@w/tmp/UUID'
[root@backup /temproary/test]# cat /tmp/UUID
10.0.0.41
172.16.1.41
[root@backup /temproary/test]#
(h)指令r的用法
將/etc/motd文件中的內(nèi)容插入到/etc/fstab文件第一行之后
[root@backup /data]# sed '1r/etc/motd' /etc/fstab
.--, .--,
( ( \.---./ ) )
'.__/o o\__.'
{= ^ =}
> - <
/ \
// \\
//| . |\\
"'\ /'"_.-~^`'-.
\ _ /--' `
___)( )(___
(((__) (__)))
高山仰止,景行行止.雖不能至,心向往之衰絮。
#UUID
# /etc/fstab
# Created by anaconda on Sat May 11 23:52:21 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=f640a15d-5888-4be9-be3d-d3474bdc2ba3 / xfs defaults 0 0
UUID=a858b3f1-5c99-4776-a591-af00d2dd9346 /boot xfs defaults 0 0
UUID=87ef599b-45f0-46a8-ab5c-38abb4b5e171 swap swap defaults 0 0
[root@backup /data]#
5袍冷、sed 中后項引用用法
[root@localhost dir]# seq -s "" 9 >file01
[root@localhost dir]# cat file01
123456789
[root@localhost dir]# sed -r 's@(..)(..).*@\2@g' file01
34
[root@localhost dir]# sed -r 's@(..)(..).*@\1@g' file01
12
[root@localhost dir]# sed -r 's@[1-9]{2}(..).*@\1@g' file01
34
[root@localhost dir]# sed -r 's@[1-9]{2}(..)(..).*@\1@g' file01
34
[root@localhost dir]# sed -r 's@[1-9]{2}(..)(..).*@\2@g' file01
56
6、sed 高級指令
高級編輯命令:
h:把模式空間中的內(nèi)容覆蓋至保持空間中猫牡;
H :把模式空間中內(nèi)容追加至保持空間中胡诗;
g :從保持空間取出數(shù)據(jù)覆蓋至模式空間
G:從保持空間取出內(nèi)容追加至模式空間
x :把模式空間中的內(nèi)容與保持空間中的內(nèi)容進(jìn)行互換;
n :讀取匹配到的行的下一行至模式空間;
N:追加匹配到的行的下一行至模式空間乃戈;
d :刪除模式空間中的行
D:刪除多行模式空間中的所有行
7褂痰、高級指令使用舉例
Sed –n ‘n;p’ file :顯示偶數(shù)行
Sed ‘1!G;h;$!d’ file :逆向顯示文件內(nèi)容
Sed ‘$!N;$!D’ file :取出文件后兩行
Sed ‘$!d’ file :取出文件最后一行
Sed ‘G’ file :每行之間追加一空行
Sed ‘/^$/d;G’ file :將多個空行合并成一個空行
Sed ‘n;d’ file 顯示奇數(shù)行
8、在sed 中使用變量
sed -n ''${I}'p' images