[
, .
, e
/
têm um significado especial em uma expressão regular. Você tem que escapar deles:
perl -i -pe "s/\[\[\ -f\ \/var\/tmp\/Li\.ksh\ \]\]\ &&\ \/var\/tmp\/Li\.ksh//"
EDIT: cuidado que isso não irá excluir a linha, mas apenas remover o texto que você tem na regex. Se se a linha inteira permanecer uma linha em branco.
Versão mais legível (use colchetes para definir o regex para que você não tenha que escapar de /
):
perl -i -pe "s{\[\[ -f /var/tmp/Li.ksh \]\] && /var/tmp/Li\.ksh}{}"
Mas, como você está perguntando sobre um script de shell, por que usar Perl e não grep -v
( --invert-match
)?
grep -v '[[ -f /var/tmp/Li.ksh ]] && /var/tmp/Li.ksh' /etc/tl.conf