我正在尝试在 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,但它增加了错误的数字,来自
node1
至 node2
, 而不是在破折号之后: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/