Simplesmente com sed
:
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/& cgroup_enable=memory swapaccount=1/' file
-
[^"]*
- corresponde a qualquer caractere, exceto as aspas duplas"
-
&
- a string combinada inteira (espaço de padrão)
Eu tenho um arquivo de opções do Grub que eu quero modificar via script. Eu quero adicionar opções adicionais de carregador de inicialização.
O arquivo pode mudar com o tempo, portanto, quero criar algo que se adapte a versões futuras anexando a qualquer uma das opções do carregador de inicialização fornecidas com a imagem.
Por exemplo, o arquivo do carregador de inicialização contém o seguinte:
# Set the recordfail timeout
GRUB_RECORDFAIL_TIMEOUT=0
# Do not wait on grub prompt
GRUB_TIMEOUT=0
# Set the default commandline
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0"
# Set the grub console type
GRUB_TERMINAL=console
GRUB_HIDDEN_TIMEOUT=0.1
Quero anexar à linha GRUB_CMDLINE_LINUX_DEFAULT para que termine como:
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 cgroup_enable=memory swapaccount=1"
Existe uma maneira de fazer isso com sed ou awk? Algo como "antes da última citação da linha que contém GRUB_CMDLINE_LINUX_DEFAULT anexar isso".
Obrigado antecipadamente!
Tags text-processing awk sed