十四、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 @   努力吧阿团  阅读(146)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· Supergateway:MCP服务器的远程调试与集成工具
点击右上角即可分享
微信分享提示