十四、sed命令其他案例

《linux命令行与shell脚本编程大全》看完了,看《linux运维之道》发现里面的案例挺接近工作环境的,记录于此。

s替换指令案例

案例1样本文件

[root@tzPC 19Unit]# cat test.txt 
<html>
<title>First Web</title>
<body>Hello the World!<body>
</html>

要求将第二个body替换为</body>

[root@tzPC 19Unit]# cat sed.sh 
/body/{
s//\/body/2
}
[root@tzPC 19Unit]# sed -f sed.sh test.txt 

 

案例2样本文件

[root@tzPC 19Unit]# cat test.txt 
<html>
<title>First Web</title>
<body>
h1Helloh1
h2Helloh2
h3Helloh3
</body>
</html>

要求给所有第一个h1,h2添加<>,第二个h1,h2添加</>

[root@tzPC 19Unit]# cat sed.sh
/h[0-9]/{
s//\<&\>/1
s//\<\/&\>/2
}

这里遇到的是//中正则表达式为空,匹配最近一次正则表达式的匹配地址也就是前面的h[0-9]

&表示用正则表达式匹配的内容进行替换

 

d删除指令案例

案例1样本文件

[root@tzPC 19Unit]# cat test.txt 
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static

IPADDR=192.168.0.1
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

要求删除文件中的空白行

[root@tzPC 19Unit]# cat sed.sh
/.*/{
/^$/d
}

.表示匹配任意单个字符,*匹配前一个字符出现零次或多次;

合起来则表示匹配任意多个任意字符。

有多种方式删除,这里写的是书中的一种

 

y转换指令案例

案例1样本文件

[root@tzPC 19Unit]# cat test.txt 
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.1
netmask=255.255.255.0
GATEWAY=192.168.0.1

要求将netmask转成大写

[root@tzPC 19Unit]#cat sed.sh
/.*/{
/netmask/y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
}

 

q退出指定案例

显示test.txt前两行内容后退出sed指令

[root@tzPC 19Unit]#sed '2q' test.txt

 

学习来自:《Linux运维之道 第2版》第3章

posted @ 2020-09-14 21:43  努力吧阿团  阅读(143)  评论(0编辑  收藏  举报