未分类
用sed命令进行整段替换
sed 整段插入: 下面是一个xml文件 1.txt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?xml version="1.0" encoding="UTF-8" ?> <ypr> <code>iuap-installer</code> <name>安装器</name> <type>Tools</type> <version>v1.0</version> <serialNum>20210927105443</serialNum> <description></description> <gitBranch>develop-20210924</gitBranch> <commitId>b26eb31</commitId> <osTypes> <osType> <os>centos</os> <arch>x86_64</arch> </osType> </osTypes> <actions> <action> <code>install</code> <tasks> <task> <type>command</type> <runner>local</runner> <template></template> <command>startup.sh</command> </task> </tasks> </action> </actions> </ypr> |
需求: 要在匹配</actions>字段后插入如下整段内容:
1 2 3 4 5 6 7 8 9 10 11 12 |
dependency=`cat <<EOF <dependencies> <dependency> <name>Maven</name> <code>apache-maven</code> <type>Tools</type> <version>3.8.2</version> <serialNum>20210927</serialNum> </dependency> </dependencies> EOF ` |
方法一:
1 |
sed -e $'/<\/actions>/{;z;r/dev/stdin\n}' 1.txt <<<"$dependency" |
方法二:
1 |
sed -e "s@<\/actions>@&\n`echo "$dependency"|awk '{printf("%s\\\\n", $0);}'|sed -e 's/\\\n$//'`@g" 1.txt |
参考: https://stackoverflow.com/questions/6684487/sed-replace-with-variable-with-multiple-lines https://www.coder.work/article/2570180