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