shell脚本:替换内容

shell脚本:替换内容,shell,sed,awk,grep,Shell,Sed,Awk,Grep,我有一个包含以下内容的文件 文件名:VersionInfo.properties Installed Version:13.7.0-2 Previous Version:13.6.0-12 Installed Version:13.7.0-4 Previous Version:13.7.0-2 文件名:main.sh #!/bin/ksh new_maj_version=$1 # sample content: 13.7.0 new_min_version=$2 # sample conte

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

文件名:VersionInfo.properties

Installed Version:13.7.0-2
Previous Version:13.6.0-12
Installed Version:13.7.0-4
Previous Version:13.7.0-2
文件名:main.sh

#!/bin/ksh
new_maj_version=$1 # sample content: 13.7.0
new_min_version=$2 # sample content: 4
每次运行main.sh时,我都希望它编辑我的VersionInfo.properties文件。安装的版本应切换到以前的版本,我的新主版本和新主版本应放置在安装的版本中。我怎样才能做到呢

运行my main.sh后的示例输出

#!/bin/ksh
new_maj_version=$1 # sample content: 13.7.0
new_min_version=$2 # sample content: 4
文件名:VersionInfo.properties

Installed Version:13.7.0-2
Previous Version:13.6.0-12
Installed Version:13.7.0-4
Previous Version:13.7.0-2
尝试以下操作:(将其保存到main.sh):

试一试

main.sh "13.7.0" "4"

这应该能奏效

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

它只做了一次。第二次它没有移动我的安装版本到以前的版本
main.sh“13.7.0”“4”安装版本:13.7.0-4以前的版本:13.6.0-12(我第二次运行它)main.sh“13.7.0”“9”安装版本:13.7.0-9以前的版本:13.6.0-12
@sravs448,它适合我。注意,上面的命令将更新的版本写入标准输出,您需要添加管道来更新原始的
VersionInfo.properties
。只要您继续适当地更新
$major\u version
$minor\u version
,这将在后续运行中继续工作。现在我有了rollback.sh文件,其中版本号硬编码为
uninstall\u rpm ClientInfrastructure 13.6.0-12
。如何使此回滚脚本在
VersionInfo.properties
中选择
以前的版本
,而不是硬编码它?您的“rollback.sh”问题没有清楚描述。什么是硬编码?执行rollback.sh之后,会发生什么?部件
卸载\u rpm ClientInfrastructure
从哪里来?我再也忍不住了。很抱歉这是对你当前问题的回答。如果它解决了你的问题,我很高兴。你的回答解决了我最初的问题。如果你也想解决其他问题,请看