Bash、文字列一致後の次の行の文字の後のすべての内容を置き換える

Bash、文字列一致後の次の行の文字の後のすべての内容を置き換える

私が望むのは、一致するものを見つけて、次の行の文字の後のすべての項目を置き換えることです。

ファイル内容の例:

  super_service:
    app_version: 1.02
  duper_service:
    app_version: 4.0.1
  happy_service:
    app_version: 2.03
  turbo_service:
    app_version: 1.28.0

期待される結果:私が望むのは、duper_serviceの例を一致させ、次に「app_version:」の後のすべてを私が定義した新しいバージョン(4.0.2など)に置き換えることです。 awkを使用してこれを実行できますが、変更をファイルに書き込む必要があります。

ベストアンサー1

次のように動作するようです。

sed -i '/duper_service/!b;n;c\ \ \ \ app_version: 4.0.2' file.txt

おすすめ記事