十四、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章
今天的学习是为了以后的工作更加的轻松!