xml - 如何使用 linux 命令(示例 sed)删除 xml 文件中的属性

标签 xml linux shell unix

我有以下 xml 文件。我想通过删除 url 来编辑它和 title每个元素的属性 <doc></doc> .我正在寻找一个可以提供帮助而不是编写整个代码的 unix 命令。


<documents>
<doc id="852" url="http://en.wikipedia.org/wiki?curid=852" title="...">
<text>
 Some text...
</text>
</doc>

<doc id="853" url="http://en.wikipedia.org/wiki?curid=853" title="...">
<text>
 Some text...
</text>
</doc>

<doc id="854" url="http://en.wikipedia.org/wiki?curid=854" title="...">
<text>
 some text...
</text>
</doc>

</documents>

最佳答案

如果 xml 与此一致,则可以使用一个简单的示例:

sed -r 's/^(<doc .* )url=".*/\1>/' myfile.xml

这表示识别以 <doc 开头的行标签,保存内容最多url ,丢弃该行的其余部分,并用新的 > 重新关闭.

您可以更加小心地使用正则表达式,但是 sed 是一个很好的工具,如果 XML 是完全可预测的。

如果您想就地更改文件,请添加 -i到 sed 调用。

关于xml - 如何使用 linux 命令(示例 sed)删除 xml 文件中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702702/

相关文章:

c++ - 如何以实时方式接受键盘输入?

linux - Linux 中的电子邮件目录列表

linux - linux shell脚本中if else语句出错

java - 从 fragment 膨胀 Activity 时出错 : InflateException

java - SAX 转换器和 <?xml ... ?> 之后的行尾

php - 如何在没有 cURL 的情况下使用 PHP HTTP POST XML 文件?

xml - 解析 GML 编码的 WFS 响应 XML 文件

sql - 读取位于 LINUX 服务器上的文本文件并更新 SQL Server 数据库中的表

类似于 wordexp 的 Java shell 扩展

bash - while循环测试文件是否存在于bash中