Что у меня сейчас есть:
kubectl logs --timestamps jenkins-68bb89fd4d-fdnwj | sed "/2020-05-15/ q"
2020-05-15T21:48:34.356315314Z Running from: /usr/share/jenkins/jenkins.war
Что оно делает:
Он читает журналы с отметками времени и останавливается, как только sed находит совпадение. В этом случае я хочу извлекать только журналы из заданного диапазона времени, например. 2020-05-17-2020-05-19. Kubectl предоставляет флаг --since-time =, который позволяет указать дату начала для журналов, однако нет флага --until-time или его эквивалента. Проблема с моим текущим подходом заключается в том, что есть предположение, что шаблон, который я ищу, будет иметь место в журналах, что может быть не так. В этом конкретном случае журналов для данного дня может не быть, но будут журналы для следующего дня.
Что я ищу:
Я могу достичь своей цели, если буду читать поток до тех пор, пока не совпаду с шаблоном. В этом случае у меня может быть список дат в bash, например
dates = (2020-05-15 2020-05-16 2020-05-17)
Однако я не знаю, можно ли указать шаблон для sed, поэтому он прекратит работу, как только шаблон перестанет соответствовать. Можно ли этого добиться с помощью sed? Если нет, можно ли этого добиться с помощью awk, grep или другого инструмента?
awk '/pattern/ { print; next } { exit }'
и другие возможности. - person Kaz   schedule 07.08.2020