2016-06-26 2 views
1

У меня есть file.php, который изменяется внешне, с линией, как:Sed не работает с регулярным выражением

echo "\n<!-- BEGIN APP v" . APP_VERSION . " - http://saite.com/ -->\n"; 

Зная картину он все еще будет следовать, мне нужно, чтобы подавить это сообщение только с новой строки.

Но я не могу найти способ этого. Я пытаюсь запустить этот код с терминала:

PAT="<!-- BEGIN APP [^>]+>" 
TO="" 
sed -i "s/$PAT/$TO/g" file.php 

Но файл не изменен.

+0

восклицательный знак является командой истории, когда интерпретатором, так что первый 'PAT = "] +>" 'должен потерпеть неудачу с' -bash:! -: event not found' (поскольку он попытался в моей системе найти предыдущую введенную команду startstarting с '--' ... – Dilettant

+0

Подтвердите, но я не вижу этого сообщения .. моя команда внутри скрипта. Может быть, это причина .. – Croll

+0

Расширение истории по умолчанию не происходит изнутри скрипта. –

ответ

0

Мне удалось это решить, используя * вместо + в регулярном выражении и дополнительную опцию -r.

sed -i -r ... 

Благодаря @tripleee и @andlrc

Смежные вопросы