如何使用SED命令在指定XML闭合标签后追加外部文件内容
SED匹配指定行后追加外部文件内容的正确写法
操作背景
目标是将ADD.txt中预存的XML片段插入到main.xml的</class>闭合标签之后,ADD.txt存储内容如下:
<student> <name>Bob</name> <id>0111</id> ----- </student>
前期执行sed -i '/</class>/e cat ADD.txt' main.xml时,ADD.txt内容被插入到</class>标签上方,不符合预期。
错误原因
sed的e参数执行逻辑为:匹配到目标行时,优先执行后续绑定的shell命令并输出执行结果,之后才会输出当前匹配到的行,因此cat命令输出的ADD.txt内容会出现在</class>行的上方。
正确实现命令
使用sed的r命令即可实现匹配行后追加外部文件内容的需求,命令如下:
sed -i '/<\/class>/r ADD.txt' main.xml
用法说明
- 匹配规则中的正斜杠需要做转义处理,写为
<\/class>,避免和sed命令的分隔符冲突导致语法报错 r命令的原生逻辑就是读取指定文件的全部内容,直接追加到当前匹配行的下一行位置,执行后ADD.txt的内容会准确出现在</class>闭合标签之后。
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

