URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9487
[ Назад ]

Исходное сообщение
"вопрос по sed"

Отправлено TheFatal , 14-Июн-12 17:07 
проблема такая, есть файл:

some {
}
{
some}
}
}

изначально была задача, вставить блок текста перед последней }, для этого просто вставлял текст перед последней строкой, вот так:
bsd# gsed '$iserver' /tmp/sedtest
some {
}
{
some}
}
server
}

но вот если в текста } не последняя, например последняя строка - пробел, то данная конструкция не работает :(
подскажите пожалуйста, как вставить текст после последней "}"


Содержание

Сообщения в этом обсуждении
"вопрос по sed"
Отправлено sdog , 14-Июн-12 23:43 
как вариант, используя tac

"вопрос по sed"
Отправлено LSTemp , 15-Июн-12 14:51 
>[оверквотинг удален]
> some {
> }
> {
> some}
> }
> server
> }
> но вот если в текста } не последняя, например последняя строка -
> пробел, то данная конструкция не работает :(
> подскажите пожалуйста, как вставить текст после последней "}"

удалить пустые строки?
sed -e '/^\s*$/d'


"вопрос по sed"
Отправлено TheFatal , 19-Июн-12 16:55 
>[оверквотинг удален]
>> {
>> some}
>> }
>> server
>> }
>> но вот если в текста } не последняя, например последняя строка -
>> пробел, то данная конструкция не работает :(
>> подскажите пожалуйста, как вставить текст после последней "}"
> удалить пустые строки?
> sed -e '/^\s*$/d'

все работает, спасибо


"вопрос по sed"
Отправлено LSTemp , 25-Июн-12 23:47 
> все работает, спасибо

не понимаю за что. ибо сущность вопроса для меня так и не ясна. особенно если учитывать наличие парных скобок в Вашем первоначальном вопросе. что/для_чего - хрен знает.

мой ответ заключался в том, что если мешают пустые строки - то удалите их, но очевидно, что это только частичное решение задачи.


"вопрос по sed"
Отправлено Andrey Mitrofanov , 26-Июн-12 21:49 
Без tac-а, без удаления пустых. Крутое sed-о-мазо:

$ seq 1 3|tr 3 }|sed '/}/{x;p;x;h};/}/!H;${x;i\
YYY
;p};d'