我有几个包含这一行的文件
Release: X
我想在所有文件中增加 X 。
如果 X 在文件之间是恒定的,我可以有一个 bash 脚本循环文件并执行 ($1 包含以前的版本号,$2 是新版本号,即 $1 + 1) :
sed 's/Release: '$1'/Release: '$2'/' <$file >$file.new
现在,如果文件之间的版本号不同,我该怎么办?
用 sed 可以吗?
我应该使用其他工具吗?
使用awk
- 它是完全正确的工具:
awk '/Release: [0-9]+/ { printf "Release: %d\n", $2+1 }' < $file > $file.new
翻译:
这个 perl one-liner 将与 awk 脚本执行相同的操作,但不会破坏文件的其余部分或包含版本的其余行。
perl -pe "$_=~s/Release: (\d+)/'Release: '. ($1+1)/e;" < file > file.new