gpt4 book ai didi

xml - 在 XML 文件中查找和递增数字

转载 作者:行者123 更新时间:2023-12-03 15:21:55 30 4
gpt4 key购买 nike

我正在尝试在 XML 中搜索字符串文件,将数字增加 1紧随其后,然后将更改保存回同一个文件。这个字符串只有一个实例。

我的文件看起来像这样:

        <attribute>
<name>test</name>
<type>java.lang.String</type>
<value>node1-3</value>
</attribute>

我正在尝试更改 3 (在 node1- 之后)并将其增加 1每次我运行一个命令。我尝试了以下 sed,将该行分成 4件,并将其替换为那些 4件,加上增量。不幸的是,它似乎没有做任何事情:
 sed -i -r -e 's/(.*)(\node1-)([0-9]+)(.*)/echo "\1\2$((\3+1))\4"/g' filepath

我也试过 awk ,这似乎让我在某个地方,但我不确定如何将行的后半部分附加到 (
awk '{FS=OFS="-" }/node1/{$2+=1}1' filepath

最后,我尝试了 perl,但它增加了错误的数字,来自 node1node2 , 而不是在破折号之后:
perl -i -pe '/node1-/ && s/(\d+)(.*)/$1+1 . $2/e' filepath

我是这些命令的新手,对我的正则表达式不太熟悉。我试图让这个命令工作,以便我可以在我正在编写的 bash 脚本中使用它。最好的方法是什么?哪个命令比另一个有优势?我想要一个 1行命令以简化后面的事情。

最佳答案

你能对节点行的最后部分进行硬编码吗?

$ awk '{FS=OFS="-" }/node1/{$2+=1; print $1 "-" $2 "</value>"} $0 !~ /node1/ {print}' file
<attribute>
<name>test</name>
<type>java.lang.String</type>
<value>node1-4</value>
</attribute>

关于xml - 在 XML 文件中查找和递增数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61467672/

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