исключая первые и последние строки от sed / ЗАПУСКАЮТСЯ/,/END/

Предыдущие ответы уже поражают основные вопросы, но существует незначительная деталь, которую могло бы стоить упомянуть.

у Вас могла быть фабрика, которая возвращает экземпляры (скрытых) подклассов абстрактного класса. Абстрактный класс определяет контракт на полученном объекте, а также обеспечение реализаций по умолчанию, но то, что класс абстрактен и мешает ему инстанцироваться непосредственно и также сигнализирует о том, что идентификационные данные "реального" класса реализации не публикуются.

44
задан Chen Levy 20 August 2012 в 03:48
поделиться

2 ответа

Это должно помочь:

sed -e '/=sec1=/,/=sec2=/ { /=sec1=/b; /=sec2=/b; s/^/#/ }' < input

Это соответствует между sec1 и sec2 включительно, а затем просто пропускает первую и последнюю строку с помощью команды b . Это оставляет желаемые строки между sec1 и sec2 (исключая), а команда s добавляет знак комментария.

К сожалению, вам действительно нужно повторять регулярные выражения для соответствия разделителям. Насколько я знаю, лучшего способа сделать это нет. По крайней мере, вы можете сохранить регулярные выражения в чистоте, даже если они используются дважды.

Это адаптировано из SED FAQ: Как мне адресовать все строки между RE1 и RE2, за исключением самих строк?

]
38
ответ дан 26 November 2019 в 22:15
поделиться

вы также можете использовать awk

awk '/sec1/{f=1;print;next}f && !/sec2/{ $0="#"$0}/sec2/{f=0}1' file
1
ответ дан 26 November 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: