Bash выполняет подстановку переменных только в двойных кавычках.
Это должно работать:
perl -p -i -e "s/<li ><a href=.*?$SOMEVAR.*?li>\n//g" file.html
EDIT На самом деле, это может показаться странным, если \n
там.Другой подход заключается в использовании конкатенации строк в Bash.Это должно сработать:
perl -p -i -e 's/<li ><a href=.*?'$SOMEVAR'.*?li>\n//g' file.html
РЕДАКТИРОВАТЬ 2: Я просто более внимательно посмотрел на то, что вы пытаетесь сделать, и это отчасти опасно.Вы используете жадную форму .*
, которая может соответствовать намного большему количеству текста, чем вы хотите.Используйте .*?
вместо этого.Я обновил вышеприведенные регулярные выражения.