텍스트가 변수에 저장될 때 "]"를 새 문자열로 바꾸려면 어떻게 해야 합니까? [복사]

텍스트가 변수에 저장될 때 "]"를 새 문자열로 바꾸려면 어떻게 해야 합니까? [복사]

내 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}

관련 정보