Я новичок в использовании sed, но я экспериментировал с sed s/..../..../
(заменой), чтобы изменить полное предложение, если оно в одной строке, но я не знаю альтернативного решения о том, как изменить предложение, которое могло быть разделено на две строки, например:
Эта:
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
на самом деле написано так:
Lorem Ipsum is simply dummy text of the
printing and typesetting industry.
Как вы можете обнаружить это или закодировать как замену всего предложения, даже если оно состоит из двух строк вместо одной?
command-line
sed
DᴀʀᴛʜVᴀᴅᴇʀ
источник
источник
Ответы:
Следующая команда будет работать в обеих ситуациях:
Дополнительные пояснения: как я могу использовать sed для замены многострочной строки?
источник
sed
, не более того. И это заглавный вопрос. Название не проperl
.Lorem
в последней строке указан дефект, который он разделяет с вашей версией.)Хотя sed может сопоставлять шаблоны на нескольких строках (используя команды
N
илиH
добавлять последовательные строки перед сопоставлением), это далеко за пределами его зоны комфорта. Попытайтесь, только если вы любите боль.Perl может делать такие вещи хорошо. Используйте этот
-p
переключатель, чтобы он обрабатывал стандартный ввод по одной записи за раз и печатал измененную запись (по типу sed), а-000
также включал режим абзаца (где записи разделены пустыми строками). В регулярном выражении\s
соответствует любому символу пробела, включая символ новой строки.Если вы хотите поместить новую строку в тексте замены, когда он содержится в оригинале, это более сложно. Как это сделать, зависит от ваших требований относительно того, куда поместить новую строку.
источник
sed
. Это также помеченоsed
, а не сperl
.sed не может легко читать несколько строк. Используйте
perl -i -0pe 's/.../.../...'
вместо этого.источник
perl
для вас проще, это не значит, что этоsed
стоит того.