用数字替换 XML 标签

用数字替换 XML 标签

假设我有一个这样的 xml

<a>
  hey
  how
  are
</a>
<a>
  where 
  are
  you
</a>

我想改变它们并分配这样的号码--

1.hey
  how
  are

2.where 
  are
  you

我更喜欢用 bash 来回答,谢谢。

答案1

假设任意命名的根元素,您可以使用awk,因为使用或处理 XML 文件通常不是一个好主意sed- 手头的任务可以通过以下单行命令轻松完成:

xmlstarlet sel -t -m "//a" -v "concat(position(),'. ',.)" input.xml

其输出为:

1. 
  hey
  how
  are
2. 
  where 
  are
  you

删除第一个换行符会比较复杂。
如果你真的想这么做,你可以尝试

xmlstarlet sel -t -m "//a" -v "concat(position(),'. ',substring-after(.,'  '))" a.xml

但这是根据给定的 XML 示例量身定制的。

相关内容