如何使用SED命令在</example-tag>标签前插入文件内容?
用SED将内容插入到
</example-tag>标签之前 你可以通过修改SED的逻辑,把data.txt的内容插入到目标标签前面,这里提供两种可靠的实现方式:
方法1:替换模式(推荐,适配特殊字符场景)
使用SED的替换命令,将匹配到的标签替换为data.txt内容 + 原标签,同时改用竖线|作为分隔符,避免data.txt中出现/导致命令失效:
sed -i 's|<\/example-tag>|'"$(cat data.txt)"'\n&|' sample.xml
- 细节说明:
"$(cat data.txt)":读取data.txt的全部内容\n:插入换行,让插入内容和标签分行显示&:代表匹配到的原标签内容</example-tag>
方法2:模式空间操作法
通过SED的模式空间与保持空间配合,先输出data.txt内容再输出原标签行:
sed -i '/<\/example-tag>/ { h s/.*/cat data.txt/e G }' sample.xml
- 细节说明:
h:把匹配到的标签行暂存到保持空间s/.*/cat data.txt/e:执行cat data.txt命令,用输出内容替换当前模式空间的内容G:从保持空间取出原标签行,追加到模式空间末尾,实现内容在前、标签在后的顺序
如果需要先验证效果,去掉命令中的-i参数即可预览修改后的内容,不会直接改动原文件。
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

