Простой способ ввода awk
- просто сохранить флаг и установить n = 1
, когда "Start"
встречается в поле 4 . Проверка n == 1
дает вам тест для печати каждой строки, в то время как n
равен 1
. Когда достигается "End"
, просто напечатайте эту строку и выйдите, например,
awk '$4 == "End" {print; exit} $4 == "Start" {n = 1} n == 1' file
( примечание: операция, связанная с правилом n == 1
, является просто операцией по умолчанию print
. Это эквивалентно записи n == 1 {print}
)
Пример использования / Вывод
Используя ваш файл данных в file
, вы получите:
$ awk '$4 == "End" {print; exit} $4 == "Start" {n = 1} n == 1' file
2019/10/17 23:01:02 -I- Start
2019/10/17 23:01:02 -I- ======================
2019/10/17 23:05:02 -I- Summary Details
2019/10/17 23:10:02 -I- End
Его также можно записать в виде:
awk '$4 == "Start" {n = 1} n == 1; $4 == "End" {exit}' file
Изменить - только сегодняшняя дата
Если вы хотите сопоставить только сегодняшнюю дату, вам просто нужночтобы передать дату в нужном формате в виде переменной в оболочку awk
из оболочки, используя опцию -v
, например,
awk -v date="$(date +%Y/%m/%d)" '
$1 == date {
if($4 == "Start") n = 1
if(n == 1) {print}
if($4 == "End") exit
}
' file
Пример ввода
$ cat file
2019/10/17 23:01:02 -W- Blah Blah Blah.....
2019/10/17 23:01:02 -I- Blah Blah Blah.....
2019/10/17 23:01:02 -I- Blah Blah Blah.....
2019/10/17 23:01:02 -I- Start
2019/10/17 23:01:02 -I- ======================
2019/10/17 23:05:02 -I- Summary Details
2019/10/17 23:10:02 -I- End
2019/10/17 23:10:02 -I- Blah Blah Blah.....
2019/10/17 23:10:02 -I- Blah Blah Blah.....
2019/10/17 23:10:02 -I- Blah Blah Blah.....
2019/10/20 23:01:02 -W- Blah Blah Blah.....
2019/10/20 23:01:02 -I- Blah Blah Blah.....
2019/10/20 23:01:02 -I- Blah Blah Blah.....
2019/10/20 23:01:02 -I- Start
2019/10/20 23:01:02 -I- ======================
2019/10/20 23:05:02 -I- Summary Details
2019/10/20 23:10:02 -I- End
2019/10/20 23:10:02 -I- Blah Blah Blah.....
2019/10/20 23:10:02 -I- Blah Blah Blah.....
2019/10/20 23:10:02 -I- Blah Blah Blah.....
Пример использования / вывода (для 2019/10/20)
$ awk -v date="$(date +%Y/%m/%d)" '
> $1 == date {
> if($4 == "Start") n = 1
> if(n == 1) {print}
> if($4 == "End") exit
> }
> ' file
2019/10/20 23:01:02 -I- Start
2019/10/20 23:01:02 -I- ======================
2019/10/20 23:05:02 -I- Summary Details
2019/10/20 23:10:02 -I- End
Дайте мне знать, если у вас есть дополнительные вопросы.