У меня есть следующий код в большой файлЗамена четырех линий с SED
}
catch (PDOException $e){
echo 'Error: '. $e->getMessage();
}
Я пытаюсь удалить эти четыре строки из файла с помощью СЭД, но не могу показаться, чтобы выяснить это. Каждая строка может иметь предыдущее или завершающее пробел.
Следующая который я думал, что должен работать не работает:
sed '1N;$!N;s/.*}.*\n.*catch.*\n.*Error.*\n.*}.*//;P;D' myfile.php
Странная вещь, что
sed '1N;$!N;s/.*}.*\n.*catch.*\n.*Error.*//;P;D' myfile.php
удаляет первые три строки. И
sed '1N;$!N;s/.*catch.*\n.*Error.*\n.*}.*//;P;D' myfile.php
удаляет последние три строки.
Почему это не работает для всех четырех линий?
Я также не совсем понимаю, зачем мне нужен $! N, чтобы это работало, поэтому, если вы можете объяснить, что именно это делает, это также поможет моему пониманию.
Спасибо!
'sed' лучше всего подходит для соответствия линии. Для многострочной линии лучше использовать Perl. Кроме того, см. [Как использовать sed для замены многострочной строки?] (Http://unix.stackexchange.com/q/26284/40596) – fedorqui
Вы получите синтаксическую ошибку PHP, если вы сохраните блок try но удалите блокирующий блок. – hek2mgl