gpt4 book ai didi

xml - 删除 Vim 中的重复行?

转载 作者:数据小太阳 更新时间:2023-10-29 02:48:48 24 4
gpt4 key购买 nike

我正在尝试使用 VIM 删除我创建的 XML 文件中的重复行。 (我无法重新创建文件,因为 ID 号会发生变化。)

文件看起来像这样:

    <tag k="natural" v="water"/>
<tag k="nhd:fcode" v="39004"/>
<tag k="natural" v="water"/>

我正在尝试删除重复的 k="natural"v="water"行之一。当我尝试使用 \_ 修饰符在我的正则表达式替换中包含换行符时,VIM 似乎没有找到任何东西。

关于使用什么正则表达式或工具的任何提示?

最佳答案

首先,您可以使用 awk 删除所有重复行,并保持它们的顺序。

:%!awk '\!_[$0]++'

如果您不确定是否还有其他一些您不想删除的重复行,那么只需添加条件即可。

:%!awk '\!(_[$0]++ && /tag/ && /natural/ && /water/)'

但是,恕我直言,用正则表达式解析像 xml 这样的嵌套结构是个坏主意。你会关心他们不要一直搞砸。xmllint 为您提供文件中特定元素的列表:

:!echo "cat //tag[@k='natural' and @v='water']" | xmllint --shell %

您可以逐步削减重复的行。

关于xml - 删除 Vim 中的重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com