Existem dois problemas com a sua solução. Primeiro, desde que você esteja usando aspas simples para '$path'
, essa expressão é tratada literalmente e não como a variável $path
. Para resolver isso, use aspas duplas "$path"
. Mas você enfrentará o segundo problema: você quer usar a barra /
como um símbolo sed
especial e ao mesmo tempo esse símbolo está presente nos caminhos, o que confundirá sed
. Portanto, você tem que usar algum outro símbolo em vez de barra, por exemplo, use vírgula
$ sed -i "s,${path},," list.txt
$ cat list.txt
/home/lin/bash/aaa
/home/lin/bash/doc.html
/home/lin/bash/directory
Existe outra abordagem bonita, sugerida por Tim Kennedy (veja explicação de como funciona na discussão abaixo), que não deixa a linha em branco
$ sed -i "\,${path},d" list.txt
$ cat list.txt
/home/lin/bash/aaa
/home/lin/bash/doc.html
/home/lin/bash/directory