使用 shell 脚本读取 属性 文件并插入 xml 标签

Read property file and Insert xml tag using shell script

我有一个 属性 文件如下,

Name=sample
TagName=Test1
TagType=P

Name=sample1
TagName=Test2
TagType=Y

我有一个 xml 文件如下,

 <?xml version="1.0" encoding="UTF-8"?>
  <root>
  </root>

需要追加如下,

   <?xml version="1.0" encoding="UTF-8"?>
  <root>
    <sub>
      <TagName>Test1</TagName>
      <TagType>P</TagType>
    </sub>
    <sub>
      <TagName>Test2</TagName>
     <TagType>Y</TagType>
    </sub>
  </root>

任何人都可以帮助我在 shell 脚本中使用 sed 或 awk 命令插入 xml 文件 ...

提前致谢..

bashxmlstarlet。我删除了 xml 文件中 <?xml 之前的 space。

#!/bin/bash

file="file.xml"
prop="property.txt"

while IFS="=" read -r key value; do
  [[ "$key" == "Name" ]]    && xmlstarlet edit -L --subnode '//root'             --type elem -n "sub" "$file"
  [[ "$key" == "TagName" ]] && xmlstarlet edit -L --subnode '//root/sub[last()]' --type elem -n "TagName" --value "$value" "$file"
  [[ "$key" == "TagType" ]] && xmlstarlet edit -L --subnode '//root/sub[last()]' --type elem -n "TagType" --value "$value" "$file"
done < "$prop"

输出到file.xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <sub>
    <TagName>Test1</TagName>
    <TagType>P</TagType>
  </sub>
  <sub>
    <TagName>Test2</TagName>
    <TagType>Y</TagType>
  </sub>
</root>

请参阅:xmlstarlet edit 快速语法概述。