У меня есть очень большой текстовый файл (40 ГБ gzipped), где блоки данных разделены //
.Выберите полный блок текста, ограниченный некоторыми символами
Как выбрать блоки данных, где определенная строка соответствует некоторому критерию? То есть, может ли шаблон grep
и расширить выделение в обоих направлениях на разделитель //
? Я не могу делать никаких предположений относительно размера блока и положения линии.
not interesting 1
not interesting 2
//
get the whole block 1
MATCH THIS LINE
get the whole block 2
get the whole block 3
//
not interesting 1
not interesting 2
//
Я хочу, чтобы выбрать блок данных с MATCH THIS LINE
:
get the whole block 1
MATCH THIS LINE
get the whole block 2
get the whole block 3
Я попытался sed
, но не могу получить мою голову вокруг определения шаблона. Это, например, должно совпадать с //
к MATCH THIS LINE
:
sed -n -e '/\/\//,/MATCH THIS LINE/ p' file.txt
Но это терпит неудачу сопоставления //
.
Возможно ли достичь этого с помощью инструментов командной строки GNU?
Perfect, который работает. Можно ли сохранить '//' и распечатать его обратно на выходе? –
@MartinPreusse, как именно? Выше и ниже блока? – fedorqui
Ниже. То есть сохраняйте разделитель между блоками данных. –