Удалить строку с специальными символами

У меня есть файл с именем test аналогичный следующему:

 hello my name <h6>test morning</h6> is bob 

Я знаю, что буду использовать:

sed -i -- 's/name//g' test

Чтобы удалить name из файла, но как удалить <h6>test morning</h6> ?

Строка может быть в любом месте файла, и файл может быть чем-то вроде файла .css или .html .

Для таких случаев вы можете использовать любой символ вместо / . Например

 sed -i 's|<h6>test morning</h6>||g' test 

Для строковых шаблонов вы должны избегать первого

 sed -i '\|<h6>test morning</h6>|s///g' test 

Если у вас мало / в шаблоне может быть легко избежать его прямо

 sed -i '/<h6>test morning<\/h6>/s///g' test 

Перл на помощь!

В Perl вы можете использовать переменную в части шаблона, и вы можете использовать quotemeta (или соответствующий escape \Q ) для выхода из специальных символов:

 REPLACE='<h6>test morning</h6>' perl -pe 's/\Q$ENV{REPLACE}//'