Еще один sed
ответ здесь, основанный на других ответах, в частности на этом Исаака.
Сопоставление всего от открывающей последовательности до первой закрывающей последовательности (здесь:},new-line
)потребует не -жадных совпадений. Как правило, sed
не имеет ни их, ни возможности инвертировать многосимвольные -строки в регулярном выражении. Вы можете найти расширенные объяснения по этой теме в U&L, одним из примеров с подробными ответами является этот вопрос .
((Элегантное )лаконичное решение IMMO, разработанное Кусаланандой, преодолевает это ограничение за счет использования диапазонов адресов. Однако здесь я стремлюсь к альтернативе, которая не будет удалять полностью первую и последнюю совпадающие строки ).
Как объясняется в ответе Исаака , вы можете преобразовать закрывающую последовательность в один символ, а затем использовать класс символов, который включает отрицание этого символа, чтобы не -жадно удалять текст до первого (новая )последовательность закрытия.
Если вы также не хотите полагаться на предположение, что этот символ не появится во входном тексте, вы можете использовать экранирование и заменить его какой-либо специальной строкой.
Это один из возможных способов сделать это (выбор «специальных» символов совершенно произвольный ),с учетом ваших требований:
sed
совпадать с текстом, занимающим несколько строк \
(наш escape-символ )на \b
-, чтобы последовательности символов, подобные \s
, были невозможны #
(нашу одиночную -закрывающую последовательность символов )на \s
-, чтобы любая #
была невозможна },new-line
на#
#
+ одном последнем#
},new-line
последовательности \s
к#
\b
к\
Соответствующая команда:
sed ' H;1h;$!d;g;
s/\\/\\b/g;
s/#/\\s/g;
s/},\n/#/g;
s/[[:blank:]]*abstract[[:blank:]]=[^#]*#//g;
s/#/},\n/g;
s/\\s/#/g;
s/\\b/\\/g;'
Один из ответов на вышеупомянутый вопрос дает аналогичный пример с экранированием. Он отличается от этого, главным образом, тем, что не стремится сопоставлять несколько -строк текста.
Ядро Linux не заботится о DNS.
Пользовательское пространство заботится о нем и обычно просматривает каждое имя каждый раз, когда оно необходимо, возможно, с некоторым локальным кэшированием.