Awk
將值添加到字元串
我有一個大的 bash 文件,其中有很多這樣的行:
... --env COMP_LABELS="service:service1" ...
service1 在每一行都不同。(有時是
service:mgmt
或service:admin
)。我正在嘗試生成一些命令(可能是 sed),這些命令將在結束引號(
"
)之前附加以下字元串:,branch:$branch
.所以在第一個例子中,它會變成:
... --env COMP_LABELS="service:service1,branch:$branch" ...
有可能嗎?提前謝謝!
(我試圖做類似的事情,
sed -i 's/OMP_LABELS=\"service:.*\"/<not sure what to put here since I need to the entire word>/g' filename
但我不知道如何完成它)
使用 sed,您可以簡單地匹配第一個之後的非
"
字元序列"
:$ echo '... --env COMP_LABELS="service:service1" ...' | sed 's/COMP_LABELS="[^"]*/&,branch:$branch/' ... --env COMP_LABELS="service:service1,branch:$branch" ...
這裡
/COMP_LABELS="[^"]*/
匹配字元串COMP_LABELS="
後跟 0 個或多個非"
字元(^
是否定運算符),然後/&,branch:$branch/
將其替換為 LHS 上匹配的任何內容(&
是反向引用),後跟字元串,branch:$branch