一重引用符内のテキストを変更するには?

一重引用符内のテキストを変更するには?

次の行を含むファイルがあります。

戦争{
    デフォルト名 = 'myapp'
    バージョン='1.0.2'
}

次の変数もあります。

variable=b123

バージョン番号に$variable値を追加するようにファイルを編集したいので、結果は次のようになります。

戦争{
    デフォルト名 = 'myapp'
    バージョン='1.0.2_b123'
}

スクリプトでどのようにこれを達成できますかbash

答え1

簡単にできますかsed

$ var=_b123
$ sed -Ee "/version/s/'(.*)'/'\1$var'/" file 
war {
    baseName = 'myApp'
    version = '1.0.2_b123'
}

/version/行に文字列が含まれていることを確認し、文字列がある場合は、一重引用符内の文字列をs同じ文字列((...)キャプチャ、\1復元)と変数のテキストに置き換えます。ここには必要な内容がすべて含まれているため、引用符は問題になりません。中にあれば安全です。)

答え2

vimが好きなら、次のようにすることができます:

vim +/version +"norm 2f'i_b123" +x file

これでファイルが開き、次の3つのコマンドが実行されます。

  • 「version」を含む最初の行に移動

  • 通常モード入力、超入力、挿入'モード入力、挿入_b123

  • 作成を終えて終了します。

関連情報