我正試圖使用sed來替換一個正則運算式捕獲組。我讀到,這需要用-E標志啟用擴展的正則運算式。然而,下面的命令仍然沒有按照預期更新文本。
echo "master-abcdef"/span> | sed -i ''/span> -E "s/IMAGE_TAG: s*(S )$/1/g"值。 yaml
其中values.yaml的內容為:
global:
env: default
default: 默認
IMAGE_TAG: dev-0be3323.zgm9a
... (更多 文本 下面)
我希望values.yaml能被替換為:
global:
env: default
default: 默認
IMAGE_TAG: master-abcdef
... (更多 text below)
uj5u.com熱心網友回復:
你可以在任何版本中使用這個sed:
sed -i.bak -E 's/(IMAGE_TAG:[[:blank:] )[^[:blank:] /1master-abcdef/' file.yml
cat file.yml
全域。
env: default
默認的。
IMAGE_TAG: master-abcdef
... (下面有更多文字)
這里[[:blank:]]匹配一個空格或制表符。
如果你使用的是gnu-sed,那么使用:
sed -i -E 's/(IMAGE_TAG:s )S /1master-abcdef/' file.yml
uj5u.com熱心網友回復:
使用yq,你可以寫
。yq eval '.default.IMAGE_TAG = "master-abcdef"'/span> values.yaml
uj5u.com熱心網友回復:
你可以使用
repl="master-abcdef"/span>
sed -i '' -E "s/(IMAGE_TAG:[[:空格:]*).*/1$repl/" values.yaml
在這里,
(IMAGE_TAG:[[:space:]]*)- 捕獲到1一個IMAGE_TAG:字串,然后是任何零或多個空白.*- 匹配字串的其余部分(這里是行)。
1$repl替換將捕獲的值 repl值放在匹配文本的位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/323609.html
標籤:
上一篇:查找不含斜線的單詞
