文字列に値を追加する

文字列に値を追加する

次のような行がたくさんある大きな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どのように達成するのかわかりません)

答え1

"sedを使用すると、最初の文字の後に文字ではなく一連の文字を簡単に一致させることができます"

$ echo '... --env COMP_LABELS="service:service1" ...' | 
    sed 's/COMP_LABELS="[^"]*/&,branch:$branch/'
... --env COMP_LABELS="service:service1,branch:$branch" ...

これは、/COMP_LABELS="[^"]*/文字列COMP_LABELS="の後にゼロ個以上の非"文字(^否定演算子)が続くものと一致し、/&,branch:$branch/LHSで一致したもの(&逆参照)に置き換えられ、その後に文字列が続きます。,branch:$branch

関連情報