我希望在file1中的abc_def_APP和application1.war字符串之间替换new_version varaiable(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)
File1内容:
location="cc://view/blah/blah/blah/abc_def_APP/13.2.0/9/application1.war"
答案 0 :(得分:0)
使用以下sed命令进行替换:
sed -i.bak -r "s#^(.*/abc_def_APP/).*(/application1\.war.*)#\1$version1/$version2\2#" /path/file1
答案 1 :(得分: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不需要你跳过箍。