#regex #bash
#регулярное выражение #bash
Вопрос:
У меня есть файл журнала, который выглядит следующим образом
2019-03-15 04:30:41-0400 id:xxxx-84f1-xxxx-85xx-c4xxxx ip:127.0.0.1 apikey:-- rt:47.3ms 200 GET /end/point
-- Request --
some content
....
-- Response --
....
2019-03-15 04:31:00-0500 uid:diffrent-id ip:10.10.10.10. netip:10.10.10.10 apikey:-- rt:309ms 200 GET /some/other/end/point
У меня есть id
, которое находится рядом со временем возникновения. Я хочу извлечь все, что связано с этим id
, до следующего события и сохранить это в файл.
Комментарии:
1. идентификатор указывается в каждой строке или только один раз, по истечении времени?
2. это происходит только один раз после времени
Ответ №1:
Чтобы получить все между двумя шаблонами, вы можете использовать эту sed
команду:
sed -n '/.* id:.*/,/.* uid:.*/p' log.txt
И вы получите
-- Request --
some content
....
-- Response --
....
где
-n
подавляет автоматическую печать пространства шаблонов
p
печатает текущее пространство шаблона
Комментарии:
1. Это делает именно то, что мне было нужно! Спасибо!