Estou tentando usar o sed em um script para modificar uma linha no meu arquivo de configuração do grub ( /boot/grub/grub.cfg
) toda vez que o grub é atualizado. Desejo substituir a seguinte linha:
menuentry "Kali GNU/Linux"
com isso:
'menuentry "Kali GNU/Linux" --class kali'
A linha em /boot/grub/grub.cfg é a seguinte:
menuentry "Kali GNU/Linux" --class gnu-linux --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-5.14.0-kali2-amd64--7afb9c25-9d47-4ce4-a3dd-635aa0b04d7a'
Basicamente, o que eu quero fazer é adicionar a linha --class kali
. Não posso substituir gnu-linux
ou os
com kali
, pois essas palavras ocorrem várias vezes.
O script que usei é o seguinte:
TARGET_STRING='menuentry "Kali GNU/Linux"'
NEW_STRING='menuentry "Kali GNU/Linux" --class kali'
sudo sed -i "s/$TARGET_STRING/$NEW_STRING/g" /boot/grub/grub.cfg
Isso não funciona, dando o seguinte erro:
sed: -e expression #1, char 32: unknown option to `s'
Encontrei soluções on-line para substituir uma string contendo espaços aqui e substituir uma string contendo aspas duplas aqui , mas não quando uma string contém ambos.
Alguém por favor poderia me ajudar?
Obs: estou usandoGNU sed 4.7