Eu uso o seguinte código para excluir uma linha:
sed -i "0,/$DELETE_THIS/{/$DELETE_THIS/d;}" file.txt
Mas esse código falha se a variável DELETE_THIS
contiver caracteres especiais, como , .
e assim por diante.../
*
Existe uma maneira de sed
ignorar todos os caracteres especiais e usá-los como texto básico?
Você tem uma string em
$DELETE_THIS
, para a qual deseja passar desed
forma ased
tratá-la literalmente.Para isso, você deve citar todos os caracteres que são significativos para
sed
.Coloque uma barra invertida antes deles. Por exemplo, usando a sintaxe Bash:
Isso será convertido, por exemplo,
^ab[c-d]\ef$
em\^ab\[c-d\]\\ef\$
.