Предыдущие ответы уже поражают основные вопросы, но существует незначительная деталь, которую могло бы стоить упомянуть.
у Вас могла быть фабрика, которая возвращает экземпляры (скрытых) подклассов абстрактного класса. Абстрактный класс определяет контракт на полученном объекте, а также обеспечение реализаций по умолчанию, но то, что класс абстрактен и мешает ему инстанцироваться непосредственно и также сигнализирует о том, что идентификационные данные "реального" класса реализации не публикуются.
Это должно помочь:
sed -e '/=sec1=/,/=sec2=/ { /=sec1=/b; /=sec2=/b; s/^/#/ }' < input
Это соответствует между sec1 и sec2 включительно, а затем просто пропускает первую и последнюю строку с помощью команды b
. Это оставляет желаемые строки между sec1 и sec2 (исключая), а команда s
добавляет знак комментария.
К сожалению, вам действительно нужно повторять регулярные выражения для соответствия разделителям. Насколько я знаю, лучшего способа сделать это нет. По крайней мере, вы можете сохранить регулярные выражения в чистоте, даже если они используются дважды.
Это адаптировано из SED FAQ: Как мне адресовать все строки между RE1 и RE2, за исключением самих строк?
]вы также можете использовать awk
awk '/sec1/{f=1;print;next}f && !/sec2/{ $0="#"$0}/sec2/{f=0}1' file