通过 bash 命令增加文件中的版本号

Wah*_*Ali 2 regex bash awk

我有一个 XML 文件,其版本号格式如下:

<Product Id="*" Name="Name" Language="1033" Version="1.2.3.4">
Run Code Online (Sandbox Code Playgroud)

我想找到版本字符串中的最后一个数字(即本例中的“4”),然后将其加一 - 在文件中替换它。理想情况下使用简单的 bash 命令(AWK?)。

Avi*_*Raj 5

你可以使用perl。

perl -i -pe 's/\b(\d+)(?=\D*$)/$1+1/e' file
Run Code Online (Sandbox Code Playgroud)

或者

perl -i -pe 's/\bVersion="[^"]*\K\b(\d+)(?=[^"]*")/$1+1/e' file
Run Code Online (Sandbox Code Playgroud)

例子:

$ echo '<Product Id="*" Name="Name" Language="1033" Version="1.2.3.4">' | perl -pe 's/\b(\d+)(?=\D*$)/$1+1/e'
<Product Id="*" Name="Name" Language="1033" Version="1.2.3.5">
Run Code Online (Sandbox Code Playgroud)