如何在 Bash 中使用标签包装文件

如何在 Bash 中使用标签包装文件

我有一个xml名为 的文件test.xml,没有像这样的根标签:

<cat></cat>
<name></name>
<id></id>
<cat></cat>
<name></name>
<id></id>

如何使用根标签包装该文件以使输出如下所示:

<root>
  <cat></cat>
  <name></name>
  <id></id>
  <cat></cat>
  <name></name>
  <id></id>
</root>

答案1

您可以通过重定向来做到这一点:

(echo "<root>"; cat test.xml; echo "</root>") > wrapped-test.xml

并带有缩进:

(echo "<root>"; sed 's/^/  /' test.xml; echo "</root>") > wrapped-test.xml

答案2

在第一行之前插入 ( i\) 开始标记,并在最后一行 ( $) 后面附加 ( a\) 结束标记(我不关心空格格式):

编辑: 我忘了说需要那个GNU版本。sed

内容script.sed

1 i\
<root>
$ a\
</root>

像这样运行它:

sed -f script.sed infile

具有以下输出:

<root>
<cat></cat>
<name></name>
<id></id>
<cat></cat>
<name></name>
<id></id>
</root>

相关内容