用linux脚本或过程替换xml中的块

时间:2016-02-01 02:12:23

标签: xml bash

我需要从数据库中提取xml消息并在数据库中进行一些编辑和更新。我试图为它编写一个程序,但是有一个条件我无法实现。

以下是我需要转换的示例消息 -

<Test>
  <First>1</First>
  <Second>2</Second>
</Test>

我想将其更改为 -

<Test>
  <First>1</First>
</Test>
<Test>
  <Second>2</Second>
</Test>

<test>标记内最多可包含4个元素。所以,

  <Test>
    <First>1</First>
    <Second>2</Second>
    <Third>3</Third>
  </Test>

需要转换为 -

<Test>
  <First>1</First>
</Test>
<Test>
  <Second>2</Second>
</Test>
<Test>
  <Third>2</Third>
</Test>

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

awk救援!

$ awk -F"\n" -v RS="</?Test>" '{b=b?b:RT;
                                for(i=2;i<NF;i++){
                                     print b; 
                                     print $i; 
                                     print RT
                                }}' file

<Test>
    <First>1</First>
</Test>
<Test>
    <Second>2</Second>
</Test>
<Test>
    <Third>3</Third>
</Test>