У меня проблемы с получением sed для сопоставления (и замены) целой строки, содержащей амперсанды. Кажется, он совпадает до первого амперсанда, а затем прекращает сопоставление. И строка замены заменяет только эту часть, а не всю строку.
sed -i 's/^error_reporting = .*/error_reporting = E_ALL \& \~E_DEPRECATED \& \~E_STRICT \& \~E_NOTICE/' /etc/php.ini
Замена правильная, с экранированными амперсандами. Но вся линия не заменяется ... только часть перед первым существующим амперсандом. Как я могу указать, чтобы sed соответствовал всему, включая амперсанды?
ОБНОВЛЕНИЕ : Я понял проблему. Я вызывал команду sed из сценария javascript, и он экранировал символы, прежде чем передать ее команде sed. Двойное экранирование строки решило проблему.