多次发生字符串中间部分的替换

时间:2016-05-17 17:01:30

标签: bash awk sed

我有一个文件,该行有多次变体: source = "git::https://github.com/ORGNAME/REPONAME.git?ref=develop"

我正在传递变量中的标记名称。我想找到以source开头的每一行,并更新文件中的那一行 source = "git::https://github.com/ORGNAME/REPONAME.git?ref=$TAG"

这应该可以用awk和sed完成,但是有一些困难使它工作。任何帮助将不胜感激!

最佳, 可人

编辑:在这种情况下,它表示“开发”,但它也可以设置为“feature / test1”或“0.0.1”。

Edit2:带有“source”的行也缩进三或四个空格。

2 个答案:

答案 0 :(得分:0)

$ sed '/^source/s/ref=develop"$/ref=$TAG"/' file

替换ref = develop"在ref = $ TAG"行的末尾对于以source开头的行。

答案 1 :(得分:0)

这应该做:

sed 's/^\([[:blank:]]*source.*[?]ref=\)[^"]*\("\)/\1'"$TAG"'\2/' file