sed如何在文件特定的位置插入文本?

简介:

假设我有一个文件叫Group.xml,它是长这个样子的(前面的数字是行号):

1
2
3
4
5
6
7
8
9
1 <Group>
2  <Server>1.2.3.4:8801< /Server >
3  <Server>5.6.7.8:8801< /Server >
4  <Server>9.9.9.9:8801< /Server >
5  <Server>J.J.J.J:8801< /Server >
6  <Server>Q.Q.Q.Q:8801< /Server >
7  <Server>K.K.K.K:8801< /Server >
8  <Server>A.A.A.A:8801< /Server >
9 < /Group >


比如现在要在原有的基础上,第7行下面加入两行字分别是“玄学大师齐达内”和“囧派始祖阿来格里”,那么使用的语句是#sed '7 a\玄学大师齐达内\n\囧派始祖阿来格里' Group.xml,效果如下:

wKiom1nDIlLgxxumAAB4SSxQN0o833.png


如果要在第7行上面加入,那么命令行就是#sed '7 i\玄学大师齐达内\n\?派始祖阿来格里' Group.xml,效果如下:

wKiom1nDI5fgKZaXAABzj_imNvE845.png


上面的操作还有一种写法,比如说要在第4行里,插入一句“足球天才莫耶斯!”,那么使用的命令是#sed -i '/5/ a\千古奇冤莫耶斯! ' Group.xml,看一下效果:

wKioL1nDIP7AQaFtAACvaQgMu9M019.png

虽然要求是在第四行里加入,但是命令写的却是“/5/”,又在sed语句里面用了a,也就是“在第五行之前”加入一句话,也就是插入到第四行。


上面的例子都是已知目标文件的第几行,如果有一个文件你不知道第几行,而是只知道倒数第几行,怎么操作呢?


比如我要在Group.xml倒数第二行插入“满门忠烈阿森纳”,那么操作的语句是#sed '$i 满门忠烈阿森纳'  Group.xml,效果如下:

wKiom1nDJpHS6WRyAABi-izCLI0517.png


现在我要在倒数第二行插入新的IP地址,但是这个IP是一个变量,同时又不可以破坏格式(前面有空格),那么使用的方法就是:

1
2
read  -p  "请输入您要新增的P2PServer的外网ip地址:"  ip
sed  -i  '$i ' "\  <Server>$ip:8801</Server>" ''  文件的绝对地址


#sed -i 默认情况下对于新插语句是不含开头的空格的,但是前面加上了“\”,就把问题解决了。


如果我要把test.xml文件里的10改成1000,那么就使用#sed -i ‘s/10/1000/g’ test.xml,但是如果需要把1000改成变量,如#sed -i ’s/10/$num/g‘ test.xml就不成功。


此时需要把单引号改成双引号,如下边例子:

1
2
$num=1000
sed  -i  "s/10/$num/g"  test .xml


参考资料:http://blog.jobbole.com/109088/


最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!

wKioL1l16m3BMYDKAACPHEqd55Q687.jpg


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1967288


相关文章
|
Linux iOS开发 MacOS
CrossOver23中文永久免费版MacOS平台快速运行Windows软件
CrossOver是一款可以让Mac和Linux系统中正常运行Windows软件的应用程序。它不像虚拟机一样需要安装Windows系统之后才可以安装Windows的应用程序,这一方式给大多数用户带来了方便。通过CrossOver实现跨平台的文件复制粘贴,使Mac/Linux系统与Windows应用良好结合。CrossOver下载:http://t.csdn.cn/Ixdq6
4871 0
CrossOver23中文永久免费版MacOS平台快速运行Windows软件
|
存储 缓存 弹性计算
2024年阿里云最便宜云服务器出炉:61元、165元、99元、199元
2024年截止目前阿里云最便宜的云服务器已经出炉,轻量应用服务器2核2G3M带宽61元1年、2核4G4M带宽165元1年;云服务器经济型e实例2核2G3M带宽99元1年;云服务器通用算力型u1实例2核4G5M带宽199元1年。除此之外,还有幻兽帕鲁Palworld专用服务器4核16G10M带宽只要26.52元/1个月、79.56元/3个月、149.00元/6个月,8核32G10M带宽只要90.60元/1个月、271.80元/3个月。本文为大家分享2024年阿里云最便宜的各个云服务器。
9449 4
2024年阿里云最便宜云服务器出炉:61元、165元、99元、199元
layoutSubviews 调用时机
layoutSubviews 调用时机
189 0
|
存储 NoSQL MongoDB
MongoDB基础
MongoDB基础
1135 0
|
API Swift iOS开发
都2022年了,我们来看看iOS StoreKit 2 吧
都2022年了,我们来看看iOS StoreKit 2 吧
1646 0
|
缓存 Shell iOS开发
macos的AppCode破解安装激活2022-09-07最新教程(附破解工具及激活码)
本文讲的是AppCode破解、AppCode激活码、AppCode安装、AppCode永久激活码的最新永久激活教程。
1600 0
macos的AppCode破解安装激活2022-09-07最新教程(附破解工具及激活码)
|
监控 算法 iOS开发
Xcode调试内存最新理解
【8月更文挑战第12天】在Xcode中进行内存调试对确保iOS应用的稳定性和性能至关重要。主要利用Instruments套件内的工具如Leaks检测内存泄漏,Allocations追踪内存分配详情,及Memory Graph Debugger提供直观的内存结构视图。Xcode还支持内存图视图以了解对象布局与引用,动态内存分析实现实时监控,及符号化调试信息帮助定位问题源代码。最佳实践包括遵循内存管理原则、定期调试、优化代码逻辑,以及学习优秀代码案例。通过这些技术和策略,开发者能有效管理和优化应用的内存使用。
717 0
|
弹性计算
2024阿里云优惠政策整理(附云服务器价格表99元一年)
2024阿里云优惠政策整理(附云服务器价格表99元一年)轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年,云服务器4核16G10M带宽26元1个月、149元半年,阿里云ECS云服务器2核2G3M新老用户均可99元一年续费不涨价,企业用户2核4G5M带宽199元一年
|
编译器 开发者 UED
"解锁hyengine编译性能新纪元:快路径优化技术揭秘,直击热点代码效率瓶颈,让你的应用飞起来!"
【8月更文挑战第21天】hyengine是一款现代化编程引擎,其编译性能直接影响应用质量。针对直接翻译opcode至机器码效率低下的问题,hyengine采用快路径优化策略,专注于热点代码的深度优化,以减少运行时开销。例如,通过循环展开技术减少控制指令开销,智能判断循环展开时机与程度。此外,还运用函数内联等技术进一步提升性能,如内联小函数以减少调用开销。未来将持续探索更多优化方案,提升用户体验,并欢迎开发者共同参与技术进步。
174 2
|
SQL 安全 搜索推荐
提问的艺术:如何让别人喜欢回答你的提问
提问的艺术:如何让别人喜欢回答你的提问
692 0
提问的艺术:如何让别人喜欢回答你的提问