所有
我有一个非常简单的Sed命令如下
sed s/XXXX/TestValue/ >> new.xml <template.xml
我在发送之前使用Sed编辑模板XML文件。
输入文件&gt;&gt; TEMPLATE.XML
<?xml version="1.0" encoding="UTF-8"?>
<EventMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="">
<host>testserver.intern.nat.com</host>
<sourceSystem>EDW</sourceSystem>
<EventEntity>
<EventEntityID>XXXX</EventEntityID>
<EventEntityType>Confirm Batch Receipt</EventEntityType>
</EventEntity>
</EventMessage>
然后在Sed处理完文件并替换“XXXX”值之后,名为new.xml的输出文件丢失了最后一个关闭元素标记
输出文件&gt;&gt; new.xml
<?xml version="1.0" encoding="UTF-8"?>
<EventMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="">
<host>testserver.intern.nat.com</host>
<sourceSystem>EDW</sourceSystem>
<EventEntity>
<EventEntityID>Batch_123.csv</EventEntityID>
<EventEntityType>Confirm Batch Receipt</EventEntityType>
</EventEntity>
---closing tag missing ---
就像Sed在XML文件中的最后一行之前关闭输出流一样。
我该如何解决这个问题?
答案 0 :(得分:1)
您可以动态添加缺失的换行符,因为sed
仅处理完整的行(即在其末尾添加换行符):
(cat input.txt; echo) | sed … > output.txt