Como substituir ']' por uma nova string quando o texto é armazenado na variável? [duplicado]

0
    

Esta pergunta já tem uma resposta aqui:

    

Meu MWE está aqui

#!/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

Eu quero sed -e "/]/${key}${newnum}/" ${list} que significa de -

['/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/']   

Eu quero pegar

['/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/']

adicione um custom3 extra na entrada.

    
por alhelal 12.03.2018 / 06:20

1 resposta

0

Use []] para representar o ] em um regex. Use @ como o delimitador da expressão sed desde que sua string de substituição tenha / .

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

Você também pode escapar com uma barra invertida:

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

Como ] é conhecido como o final da string, você também pode alterar o último caracter sem levar em conta o que é:

sed -e "s@.\$@${key}${newnum}@" ${list}
    
por 12.03.2018 / 06:39