在每个 XML 标记后添加换行符

在每个 XML 标记后添加换行符

我的 xml 文件如下所示:

<price = "2.22"><instock = "1">

我需要这样:

<price = "2.22">
<instock = "1">

我需要在每个“>”字符后用 awk 或 sed 添加一个换行符。我该怎么做?谢谢

答案1

正如 KeithB 所说,使用粗暴的方法可能会出现一些问题。但是,这种粗暴的方法选择性更强,因此失败的几率会降低约 0.00001%,这可能就足够了。

sed 's|><|>\n<|g' inputfile

如果尖括号之间可能有空格,那么这样做可能会更好:

sed 's|>[[:space:]]*<|>\n<|g' inputfile

这将消除该空白。

答案2

如果要正确执行此操作,您需要比 awk 更强大的工具。其中一个问题是 awk 无法处理>内部字符串或注释。您可能更适合使用 perl 或 python。如果这只是为了使文件更容易查看,那么它可能没问题。

一个快速而粗糙的 awk 脚本是

 awk '{for(i=1; i<= NF-1; i++) printf "%s>\n",$i}' FS='>'

这会将其>视为字段之间的分隔符,并在各自的行上打印出每个字段。这很粗糙,但可能是一个起点。

相关内容