Supondo que a parte para user_value tenha sempre 3 caracteres, você pode fazer assim:
sed "s/name_of_the_value=.{0,3}/name_of_the_value=$new_value/"
Ou se tiver certeza de que não há nada atrás nessa linha, você também pode usar:
sed "s/name_of_the_value=.*/name_of_the_value=$new_value/"
Espero ter acertado o REGEX, não sou profissional nisso. Assim, o valor deve ser todo o tempo 3 caracteres de comprimento melhor no formato hexadecimal, porque decimal não é sempre 3 caracteres de comprimento em casos abaixo de 100. O segundo caso deve funcionar mesmo i o número está abaixo de 100, mas assume todo o name_of_the_value=user_value
parte está em uma linha própria. Agora, testando isso no terminal, a saída se parece com isso para o segundo caso:
video@NAUTH:~$ echo "name_of_the_value=xxx" | sed "s/name_of_the_value=.*/name_of_the_value=$USER/"
name_of_the_value=video
É claro que você precisa enviar a saída de volta para o arquivo ou usar um arquivo temporário para trocar. Você poderia usar:
sed "s/name_of_the_value=.*/name_of_the_value=$new_value/" /input_file | sponge /input_file
Sed apenas altera a saída enquanto lê o arquivo, não o grava, a esponja salva a saída até que você termine e grave as alterações de volta.
Se você não quiser ou não puder usar esponja, escreva em um segundo arquivo e, em seguida, alterne-os como essa cadeia de comandos.
sed "s/name_of_the_value=.*/name_of_the_value=$new_value/" /input_file > /output_file
rm -v /input_file
mv -v /output_file /input_file
Como @kos apontou no comentário, você também pode usar o sinal -i
do comando sed
para gravar de volta no arquivo de entrada sem o uso de um arquivo temporário ou sponge
:
sed -i "s/name_of_the_value=.*/name_of_the_value=$new_value/" /input_file