shell脚本:替换内容

时间:2013-07-11 14:37:42

标签: shell sed awk grep

我有一个包含以下内容的文件

文件名:的 VersionInfo.properties

Installed Version:13.7.0-2
Previous Version:13.6.0-12

FileName: main.sh

#!/bin/ksh
new_maj_version=$1 # sample content: 13.7.0
new_min_version=$2 # sample content: 4

每次运行main.sh时,我都希望它能够编辑我的VersionInfo.properties文件。已安装的版本应转换为早期版本,我的new_maj_version和new_min_version将置于已安装版本。我怎样才能实现它?

运行main.sh后的示例输出

文件名:的 VersionInfo.properties

Installed Version:13.7.0-4
Previous Version:13.7.0-2

2 个答案:

答案 0 :(得分:1)

试试这个:(将它保存到你的main.sh):

#!/bin/ksh
awk -F: -v a="$1" -v i="$2" 'NR==1{n=$2;print $1":"a"-"i;next}{print $1":"n}'  /VersionInfo.properties > /tmp/tmpVersion && mv /tmp/tmpVersion VersionInfo.properties

尝试

main.sh "13.7.0" "4"

答案 1 :(得分:0)

这应该可以解决问题

 sed -e "/Installed Version/{s/Installed Version:\(.*\)/Installed Version:$major_version-$minor_version\nPrevious Version:\1/; n}" -e '/Previous Version/{d}'
VersionInfo.properties