我有几个包含这一行的文件
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
翻译:
搜索包含"Release:"后跟一个或多个数字的行.
打印"发布:",后跟数字和换行符.数字是输入行中的第二个单词(数字)加1.
这个perl one-liner将与awk脚本一样,但不会破坏文件的其余部分或包含该版本的其余行.
perl -pe "$_=~s/Release: (\d+)/'Release: '. ($1+1)/e;" < file > file.new