Используя ваш файл примера, повторенный три раза подряд с изменениями:
Record: XXXXXX [
{variable number of lines and content}
Start to do this thing
]
Record: YYYYYY [
{variable number of lines and content}
Stop doing this thing
]
Record: ZZZZZZ [
{variable number of lines and content}
Start again
]
Тогда:
$ awk '/^Record:/ { r = $2 } /^Start/ { print r ":", $0 }' file
XXXXXX: Start to do this thing
ZZZZZZ: Start again
Мы просто берем номер/метку записи, как только видим строку, начинающуюся с Record:
, и сохраняем ее в переменной r
. Затем, когда мы находим строку, начинающуюся с Start
, мы печатаем любую найденную лейбл и строку.
Если строка не начинается с Start
, возможно, вам придется изменить регулярное выражение с /^Start/
на /^ *Start/
, что позволит использовать любое количество пробелов между словом и началом линии.
Это не удастся, если между записями, соответствующими Start
, в файле есть другие вещи.