十四、sed命令其他案例
《linux命令行与shell脚本编程大全》看完了,看《linux运维之道》发现里面的案例挺接近工作环境的,记录于此。
s替换指令案例
案例1样本文件
[root@tzPC 19Unit]# cat test.txtFirst Web Hello the World!
要求将第二个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.txtFirst Web h1Helloh1 h2Helloh2 h3Helloh3
要求给所有第一个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章