Faça assim:
sed -i "/$variable/c \${variable}1" file.txt
Mudanças:
-
Se você tem um
\
antes de um$
, ele faz o shell inserir um literal$
na string. Em vez disso, coloque um\
extra para escapar do primeiro, para que, literalmente,\
seja impresso. -
Se sua variável tiver letras ou números imediatamente depois dela, coloque o nome em
{...}
, isso diferencia sua variável de um não existentevariable1
(se uma variável não existir, o shell a expandirá para nada em vez de procurar um nome mais curto que o faça). -
Seja consistente com suas citações, você começou com um
"
, então não termine com'
! As variáveis são expandidas apenas entre aspas duplas, de qualquer forma.
Note que para depurar coisas como essa você pode usar echo
, olhando para a saída, o comando abaixo mostrará o que deu errado:
echo sed -i "/$variable/c \$variable1" file.txt
Compare-o com
echo sed -i "/$variable/c \${variable}1" file.txt