Unix - 取消注释xml注释

时间:2015-07-01 19:03:22

标签: xml linux unix sed

我在XML文件下面有节点。如何使用Unix shell脚本或命令取消注释mainHost的首次出现?

        <!-- Host without authentication -->
            <!-- <mainHost> <hostName>test.com</hostName> <httpPort>80</httpPort>
                    </mainHost> -->
            <!-- Host with authentication userId: User name of Host server Password:
                     -->
            <!-- <mainHost> <hostName>127.0.0.1</hostName> <httpPort>80</httpPort>
                    <userId>username</userId> <password>password</password>
                    </mainHost> -->

我尝试过使用不同变体的下面命令,但这似乎不起作用。

sed&#39; 0,/&lt;! - / {s /&lt;! - //}&#39; /test.xml

我期待低于输出

        <!-- Host without authentication -->
             <mainHost> <hostName>test.com</hostName> <httpPort>80</httpPort>
                    </mainHost> 
            <!-- Host with authentication userId: User name of Host server Password:
                     -->
            <!-- <mainHost> <hostName>127.0.0.1</hostName> <httpPort>80</httpPort>
                    <userId>username</userId> <password>password</password>
                    </mainHost> -->

由于

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上(假设必须使用sed)。

使用以下内容创建文件(例如script.sed):

0,/<\/mainHost>/{
  /<mainHost>/,/<\/mainHost>/{
    s/<!--//
    s/-->//
  }
}

并运行sed -f script.sed FILE.xml

请注意,此解决方案很难概括。 sed可能不是完成任务的最佳工具。