我有一段xml文档,我试图稍微操纵一下。到目前为止,我已经使用了" sed"找到并替换它的部分,它现在足够接近我需要的东西。到目前为止它看起来像这样
<?xml version=1.0 encoding=UTF-8?>
<AIFMReportingInfo
CreationDateAndTime="2014-12-08T00:00:00"
Version="1.2"
ReportingMemberState="GB"
xsi:noNamespaceSchemaLocation=AIFMD_DATMAN_V1.2.xsd xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
剩下要做的就是追加#34; CreationDateAndTime&#34;从第二行开始,输出应该看起来像这样
<?xml version=1.0 encoding=UTF-8?>
<AIFMReportingInfo CreationDateAndTime="2014-12-08T00:00:00" Version="1.2" ReportingMemberState="GB" xsi:noNamespaceSchemaLocation=AIFMD_DATMAN_V1.2.xsd xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
包括我追加到第二行的每一行之间的空格。有没有办法使用sed这样做?任何建议都会非常感谢,提前谢谢。
答案 0 :(得分:0)
看看这是否足够。
tr '\n' ' ' < File | sed -r 's/(encoding=UTF-8\?>)/&\n/g'
示例:强>
$ cat File
<?xml version=1.0 encoding=UTF-8?>
<AIFMReportingInfo
CreationDateAndTime="2014-12-08T00:00:00"
Version="1.2"
ReportingMemberState="GB"
xsi:noNamespaceSchemaLocation=AIFMD_DATMAN_V1.2.xsd xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
$ tr '\n' ' ' < File | sed -r 's/(encoding=UTF-8\?>)/&\n/g'
<?xml version=1.0 encoding=UTF-8?>
<AIFMReportingInfo CreationDateAndTime="2014-12-08T00:00:00" Version="1.2" ReportingMemberState="GB" xsi:noNamespaceSchemaLocation=AIFMD_DATMAN_V1.2.xsd xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
答案 1 :(得分:0)
你可以做到
~$ sed '1!{:a;N;$!ba s/\n//g}' myfile
<?xml version=1.0 encoding=UTF-8?>
<AIFMReportingInfo CreationDateAndTime="2014-12-08T00:00:00" Version="1.2" ReportingMemberState="GB"xsi:noNamespaceSchemaLocation=AIFMD_DATMAN_V1.2.xsd xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
除了第一行(1!
)之外,将该行附加到模式空间(N
),如果不是,则将文件末尾($!
)追加到标签a ba
。在文件末尾,将每个\n
替换为空(s/\n//g
)。