テキストが変数に保存されたときに「]」を新しい文字列に置き換えるにはどうすればよいですか? [コピー]

テキストが変数に保存されたときに「]」を新しい文字列に置き換えるにはどうすればよいですか? [コピー]

私のMWEはここにあります

#!/bin/bash
num=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | grep -oE '[0-9]+'|sort -rn|head -n 1)
num=$((num + 1))
echo $num
#gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "[<altered_list>]"
#gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "[$key , $key $num]"
key="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom"
list=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings)
newnum=$(echo "${list}" | grep -oE '[0-9]+' |sort -rn|head -n 1)
echo $newnum
sed -e "/]/${key}${newnum}/" ${list}
#gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "[$key , $key $num]"
echo $key

これは意味だと思いますsed -e "/]/${key}${newnum}/" ${list}-

['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/']   

欲しい

['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/','/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/']

custom3入力に追加のコンテンツを追加します。

ベストアンサー1

正規表現の[]]表現に使用されます]。代替文字列が含まれているため、@sed式の区切り文字として使用されます。/

sed -e "s@[]]@${key}${newnum}@" ${list}

バックスラッシュを使用してエスケープすることもできます。

sed -e "s@\]@${key}${newnum}@" ${list}

]文字列の末尾にあることが知られているので、それが何であるかに関係なく、最後の文字を変更することもできます。

sed -e "s@.\$@${key}${newnum}@" ${list}

おすすめ記事