如果数字不总是相同,如何增加几个文件中的数字?

Bar*_*rth 4 bash scripting search replace sed

我有几个包含这一行的文件

Release: X
Run Code Online (Sandbox Code Playgroud)

我想在所有文件中增加X.

如果文件之间的X是不变的,我可以在文件周围循环一个bash脚本($ 1包含前版本号,$ 2包含新版本,即$ 1 + 1):

sed 's/Release: '$1'/Release: '$2'/' <$file >$file.new
Run Code Online (Sandbox Code Playgroud)

现在,如果文件之间的版本号不同,我该怎么办?

它是否适用于sed?

我应该使用其他工具吗?

Ada*_*iss 13

使用awk- 它是完全正确的工具:

awk '/Release: [0-9]+/ { printf "Release: %d\n", $2+1 }' < $file > $file.new
Run Code Online (Sandbox Code Playgroud)

翻译:

  • 搜索包含"Release:"后跟一个或多个数字的行.
  • 打印"发布:",后跟数字和换行符.数字是输入行中的第二个单词(数字)加1.


The*_*aul 8

这个perl one-liner将与awk脚本一样,但不会破坏文件的其余部分或包含该版本的其余行.

 perl -pe "$_=~s/Release: (\d+)/'Release: '. ($1+1)/e;" < file > file.new
Run Code Online (Sandbox Code Playgroud)