質問: ### 前提・実現したいこと シェルスクリプトの文字列内の特定位置へ文字列追加する方法について。 以下の例を達成するにはどのように出力、または変数を定義すればいいでしょうか。 <例> example='"date:xxxxmemo:yyyyfree:aaaa"' <実現したいこと> ・「memo:yyyy」の最後の位置と「free:aaaa」の最初の位置の間に文字列「basho:zzzz」の追加 <前提> ・yyyyの内容は可変で空白、カンマを含む。 ・文字列「free:aaaa」はある場合もある。 ・追加後の変数名をexample2とする。 ### 実現するために考えた流れ memo=`${example}から「memo:yyyy」を抽出` basho="basho:zzzz" example2=`echo ${example} | sed -e s/memoの内容/memoの内容bashoの内容/g` echo "${example2}" ..."date:xxxxmemo:yyyybasho:zzzzfree:aaaa"
回答: 文字列末尾の`"`の直前に文字列挿入と言う事なら、 ``` example2="${example%\"}basho:zzzz\"" ``` ですね。 追記 == 末尾の`"`の直前ではないということなので、`sed`等を使います。 ``` example='"date:xxxxmemo:yyyyfree:aaaa"' basho="basho:zzzz" example2=$(echo "$example" | sed 's/\(memo:[^<]*\)/\1'"$basho/") ```