替换以特定char开头的字符串,直到特定的char

时间:2017-07-11 10:07:14

标签: string bash macos

在一个文件的全局中,我想查找以RewriteEngine on RewriteCond %{HTTP_HOST} ^Domainyoustayat.tld RewriteRule ^(.*) http://Domain-you-want-to-show-on-above.tld/$1 [P] 开头的所有字符串,并将.git#v中的字符串部分替换为下一个字符串v。< / p>

所以,f.e。如果我有" - 我希望migrations.git#v1.1.1",找到它并将.git#v替换为v1.1.1。关键是版本号会因不同的事件而有所不同,这就是我需要依靠develop部分找到这些部分的原因。

到目前为止我已经得到了这个:

.git#v

但我知道这还不够,因为它只会用sed -i -- 's/.git#v/.git#develop/g' package.json 替换整个.git#v

1 个答案:

答案 0 :(得分:2)

echo 'migrations.git#v1.1.1"' |sed -r 's/\.git#v[^"]+"/\.git#develop/g'
migrations.git#develop

如果您不想使用-r+符号需要处理。

sed 's/\.git#v[^"]\+"/\.git#develop/g'
migrations.git#develop

awk解决方案,使用gsub

echo 'migrations.git#v1.1.1"' |awk '{gsub(/.git#v[^"]+"/,".git#develop")}1'
migrations.git#develop