Итак, я, наконец, получил, что мой босс одобрил использование perl для этой цели, а не sed.Perl non-greedy Regex
Вот базовое quandry.
У меня есть такие строки:
<div class="SectionText">Sometext</div><div class="SectionText">Some more text</div>
Это ужасно грязный, но я не писал. В любом случае, есть изрядное количество страниц, как это, и они должны быть изменены в следующем формате:
<p>Sometext</p><p>Some more text</p>
Очевидно, что это должно быть не жадный. Теперь вот линия, которую я придумал, чтобы помочь с этим:
perl -nle "s/(.*)<div class=\"SectionText\">(.*?)<\/div>(.*)/\1<p>\2<\/p>\3/ig; print $1" "somefile.html" > otherfile.html
Однако это не делает ничего, и все SectionText теги по-прежнему остаются.
Вы говорите, что это должно быть не жадным и все же поставить '. *' В начале, посередине и в конце регулярного выражения. Кроме того, вы уверены, что не хотите использовать для этого фактический парсер HTML? –