LINUX.ORG.RU

Ребус про блоки текста


0

2

Есть интересный ребус. Имеется текстовый файл, в котором данные поделены на отдельные блоки разделительными строками "---------". Задача: удалить все блоки, которые занимают лишь одну строку. В остальных блоках оставить только первую строку.

Понятное дело, что номера строк с разделителями можно получить через «sed -n '/^---------$/='», но что с этим дальше делать по-человечески? Ведь, после удаления хотя-бы одной строки все строки ниже уже сместятся. Это, по ходу, надо организовать какой-то флаг, через который после каждого отдельного удаления всё будет перечитываться заново. Или есть более простые пути?

★★★★★

Ответ на: комментарий от saahriktu

Или вот на sed еще

#!/bin/sed -nf
:a
/^---------$/ {
    n
    //! {
        h; n
        //! { g; p; n; }
        ba
    }
}
, но перед первым блоком должен быть разделитель.

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