Поскольку sed
соответствия в a greedy
способ, всегда существует возможность, что текст мимо конца комментария будет подобран вместо предыдущего реального маркера конца комментария, например, как в заключенной в кавычки строке, которая содержит "* /".
Это не может быть обработано sed
простым способом, но можно работать вокруг этого. Вот один такой метод: использование односимвольного заполнителя для конечного ограничителя с двумя символами. Используя шестнадцатеричное значение \x01
поскольку заместитель символов в безопасности (т.е. не столкнется с существующим текстом), поскольку он не существует в обычном тексте.
sed "\|^/\*.*\*/|{ s|\*/|\x01|; s|.*\x01|| }" "$file"
perl
, с другой стороны, может дополнительно обработать lazy
соответствие (и намного больше). Как уже упомянуто принцем John Wesley в комментариях, вот ленивое perl
эквивалентный.
perl -ple 's|/\*.*?\*/||g' "$file"
Я смог решить проблему при помощи aptitude purge
удалить все пакеты PHP и их конфигурационные файлы наряду с nginx
. Я затем переустановил каждый пакет PHP индивидуально, поскольку это стало необходимым. Я также использовал конфигурационные файлы perusio PHP-FPM.