小编tar*_*che的帖子

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

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

我的文件看起来像这样:

        <attribute>
                <name>test</name>
                <type>java.lang.String</type>
                <value>node1-3</value>
        </attribute>
Run Code Online (Sandbox Code Playgroud)

我正在尝试更改3(在 node1- 之后)并在1每次运行命令时增加它。我尝试了以下 sed,将该行分成4几部分,然后用这些4部分替换它,再加上一个增量。不幸的是,它似乎没有做任何事情:

 sed -i -r -e 's/(.*)(\node1-)([0-9]+)(.*)/echo "\1\2$((\3+1))\4"/g' filepath
Run Code Online (Sandbox Code Playgroud)

我也试过awk,这似乎让我在某个地方,但我不确定如何将行的后半部分附加到 (

awk '{FS=OFS="-" }/node1/{$2+=1}1' filepath
Run Code Online (Sandbox Code Playgroud)

最后,我尝试了 perl,但它增加了错误的数字,从node1node2,而不是在破折号之后:

perl -i -pe '/node1-/ && s/(\d+)(.*)/$1+1 . $2/e' filepath
Run Code Online (Sandbox Code Playgroud)

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

xml perl awk

10
推荐指数
4
解决办法
579
查看次数

标签 统计

awk ×1

perl ×1

xml ×1