Awk

將值添加到字元串

  • March 25, 2022

我有一個大的 bash 文件,其中有很多這樣的行:

... --env COMP_LABELS="service:service1" ...

service1 在每一行都不同。(有時是service:mgmtservice: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

引用自:https://unix.stackexchange.com/questions/696443