perl -ne 'print( $z . $_ ) if m{^\@}; $z=(m{^//} ? $_ : "");'
Эта однострочная строка обрабатывает STDIN по одной строке за раз.
Если найдена строка, начинающаяся с @
, выводится содержимое $z
, за которым следует текущая строка.*
Затем, если он обнаруживает строку, начинающуюся с //
, он сохраняет строку в переменной $z
.Переменная $z
сбрасывается, если строка не начинается с //
.
Я провел этот быстрый тест и должен выполнить запрошенную работу.
Инструмент grep
не запоминает состояние между строками.