我有两个许可证xml文件:a-license.xml
和b-license.xml
。两个许可证文件的格式相同。我想将它们合并到一个文件中。
示例输入:
文件a-license.xml包含
<company-license>
<generator></generator>
<customer></customer>
<orderid></orderid>
<expiration></expiration>
<license>
<module>A</module>
<license_key>xxxx-xxxx-xxxxx</license_key>
</license>
</company-license>
文件b-license.xml包含
<company-license>
<generator></generator>
<customer></customer>
<orderid></orderid>
<expiration></expiration>
<license>
<module>B</module>
<license_key>yyyy-yyyy-yyyy</license_key>
</license>
</company-license>
所需的输出应该类似于
<company-license>
<generator></generator>
<customer></customer>
<orderid></orderid>
<expiration></expiration>
<license>
<module>A</module>
<license_key>xxxx-xxxx-xxxxx</license_key>
</license>
<license>
<module>B</module>
<license_key>yyyy-yyyy-yyyy</license_key>
</license>
</company-license>
我想从<license>
中提取a-license.xml
代码并将其附加在<license>
的{{1}}代码下方。
我该怎么做?
答案 0 :(得分:1)
sed -n '1,/<license>/{/<license>/d;p;}' a-license.xml > new-license.xml
sed -n '/<license>/,/<\/license>/p' a-license.xml >> new-license.xml
sed -n '/<license>/,/<\/company-license>/p' b-license.xml >> new-license.xml
或更短:
sed -n '1,/<\/license>/p' a-license.xml > new-license.xml
sed -n '/<license>/,$p' b-license.xml >> new-license.xml
输出到文件new-license.xml:
<company-license>
<generator></generator>
<customer></customer>
<orderid></orderid>
<expiration></expiration>
<license>
<module>A</module>
<license_key>xxxx-xxxx-xxxxx</license_key>
</license>
<license>
<module>B</module>
<license_key>yyyy-yyyy-yyyy</license_key>
</license>
</company-license>
答案 1 :(得分:1)
$ awk 'NR==FNR{print;next} /<license>/{f=1} f' fileA fileB
<generator></generator>
<customer></customer>
<orderid></orderid>
<expiration></expiration>
<license>
<module>A</module>
<license_key>xxxx-xxxx-xxxxx</license_key>
</license>
<license>
<module>B</module>
<license_key>yyyy-yyyy-yyyy</license_key>
</license>