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