「sed」を使用して文字列の「=」記号の後に値を追加するにはどうすればよいですか?

「sed」を使用して文字列の「=」記号の後に値を追加するにはどうすればよいですか?

背景

/etc/default/hostapd次の文字列を取得し、その後に値を追加したいと思います=

#DAEMON_CONF=""->DAEMON_CONF="/etc/hostapd/hostapd.conf"

テスト

un_comment_and_add_value() {
       file="$1"
       given_str="$2" ##DAEMON_CONF=""
       value="$3" # /etc/hostapd/hostapd.conf
                  #dont know where to put this in the 'sed' cmd

       sed -i "/$given_str/s/^#//g" "$file"
}

un_comment_and_add_value "/etc/default/hostapd" "#DAEMON_CONF=\"\"" "/etc/default/hostapd"

ベストアンサー1

与えられた例では、以下を試してください。

sed -i "/^$given_str/{s/.//; s|.$|$value\"|}" "$file"
  • 変数の補間を許可するには、二重引用符を使用してください。
  • /^$given_str/与えられた文字列が行の先頭に一致する場合
    • s/.//最初の文字を削除
    • s|.$|$value\"|最後の文字を与えられた代替文字列と二重引用符で置き換えます。

追加資料:

おすすめ記事