LINUX.ORG.RU

более подробное описание задачи: есть файл в котором некоторые строки помечены специальными тегами надо каждую строку с тегами добавлять в начало всех следующих за ней строк если они не содержат тегов. если содержат то далее подставляем последнюю строку с тегами

cvv ★★★★★
() автор топика
Ответ на: комментарий от kosmonavt

Вот что-то получилось. 

echo -e 'aaa000\nbbb\nccc' |
sed -ne '/aaa/b a
s/^.*$/&---/  #клеим маркер `---' в конец
G   #объединяем строку с доп. буфером
# убираем '\n' в середине
s/\
//
# перестановка
s/^\(.*\)---\(.*\)$/\1\2/
p
b #следующая строка
:a #в доп. буфер и печать стр. с тегом
h
p'

kosmonavt
()
Ответ на: комментарий от cvv

>с awk красивее

Согласен, но можно упростить - '\n' в середине использовать как маркер

sed -ne '/aaa/b a
G
s/^\(.*\)\
\(.*\)$/\2\1/
p
b
:a
h
p'

kosmonavt
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.