我在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> -->
由于
答案 0 :(得分:0)
你走在正确的轨道上(假设必须使用sed
)。
使用以下内容创建文件(例如script.sed
):
0,/<\/mainHost>/{
/<mainHost>/,/<\/mainHost>/{
s/<!--//
s/-->//
}
}
并运行sed -f script.sed FILE.xml
。
请注意,此解决方案很难概括。 sed
可能不是完成任务的最佳工具。