Как Grep до определенного персонажа или строки
Мне нужно извлечь данные журнала из множества файлов журналов на сумму в несколько терабайт. Дело в том, что данные, которые мне нужны, начинаются и заканчиваются шаблонами, которые я могу идентифицировать, но код между ними может быть от 10 до 100+ строк.
Пример:
Start
# lots of lines here
End
В настоящее время я занимаюсь grep -A 50 "Start"
, который дает мне начало и 50 строк после этого. Однако почти во всех случаях это больше или меньше, чем мне нужно. Больше означает, что полученный файл отчета увеличивается на гигабайты больше, чем нужно, и меньше означает, что я не получаю нужную мне информацию.
Есть ли способ извлечь именно то, что мне нужно, используя стандартные инструменты Unix / Linux?
1 ответ
Решение
Попробуйте это с помощью awk:
awk '/^Start/,/^End/' file
или если вы предпочитаете sed:
sed -n '/Start/,/End/p' file