0

我希望在 file1 中的 abc_def_APP 和 application1.war 字符串之间替换 new_version 变量(13.2.0/8)的内容

脚本 :

    #!/bin/ksh
   new_version="13.0.5/8"          
 old_version=($(grep -r "location=.*application1.war" /path/file1| awk '{print ($1)}'| cut -f8- -d"/"|sed 's/.\{1\}$//'))
   echo "$old_version" 'This gives me version number from file1 which needs to be replaced(13.2.0/9)

文件 1 内容:

location="cc://view/blah/blah/blah/abc_def_APP/13.2.0/9/application1.war"
4

2 回答 2

0

使用 GNU awk(用于 gensub()):

$ cat file
location="cc://view/blah/blah/blah/abc_def_APP/13.2.0/9/application1.war"

$ new_version="13.2.0/8" 

$ gawk -v nv="$new_version" '{$0=gensub(/^(location.*abc_def_APP\/).*(\/application1.war.*)/,"\\1" nv "\\2","")}1' file
location="cc://view/blah/blah/blah/abc_def_APP/13.2.0/8/application1.war"

此解决方案与 sed 解决方案之间的区别在于,由于 new_version 变量包含“/”(或任何其他字符),因此 awk 不需要您跳过障碍。

于 2013-05-08T21:59:40.283 回答
0

使用以下 sed 命令进行替换:

sed -i.bak -r "s#^(.*/abc_def_APP/).*(/application1\.war.*)#\1$version1/$version2\2#" /path/file1
于 2013-05-08T20:29:13.703 回答