используя awk для проверки между двумя датами

У меня есть файл с несколькими структурами данных, например:

eventTimestamp: 2010-03-23T07:56:19.166
result: Allowed
protocol: SMS
payload: RCOMM_SMS

eventTimestamp: 2010-03-23T07:56:19.167
result: Allowed
protocol: SMS
payload: RCOMM_SMS

eventTimestamp: 2010-03-23T07:56:19.186
result: Allowed
protocol: SMS
payload: SMS-MO-FSM

eventTimestamp: 2010-03-23T07:56:19.197
result: Allowed
protocol: SMS
payload: COPS

eventTimestamp: 2010-03-23T07:56:29.519
result: Blocked
protocol: SMS
payload: COPS
type: URL_IWF
result: Blocked

Я хочу найти все события полезной нагрузки: SMS-MO-FSM или полезной нагрузки: SMS-MO-FSM-INFO, которые произошли между периодами 2010-03-23 ​​12:56:47 и 2010-03-23 ​​13: 56:47. При запросе этого файла я использовал awk следующим образом:

cat checkThis.txt |
awk 'BEGIN{FS="\n"; RS=""; OFS=";"; ORS="\n"}
     $1~/eventTimestamp: 2010-03-23T14\:16\:35/ && $4~/SMS-MO-FSM-INFO|SMS-MO-FSM$/ {$1=$1 ""; print $0}'

Что даст мне все события, которые произошли второго 14:16:35 в 2010-03-23. Однако я пытаюсь придумать, как я могу поместить диапазон дат в свой запрос. Я мог бы использовать следующее, чтобы поместить даты в время эпохи, но как я могу использовать следующее в моем awk, чтобы проверить, находится ли дата между необходимыми временами:

python -c "import time; ENGINE_TIME_FORMAT='%Y-%m-%dT%H:%M:%S'; print int(time.mktime(time.strptime('2010-03-23T12:52:52', ENGINE_TIME_FORMAT)))"

Я знаю, что это может быть сделано в Python, но я написал для этого синтаксический анализатор, и я хочу использовать этот метод в качестве альтернативного средства проверки, поэтому я хочу использовать awk, если это возможно.

Я взял это немного дальше и создал скрипт Python для преобразования времени:

#!/usr/local/bin/python
import time, sys
ENGINE_TIME_FORMAT='%Y-%m-%dT%H:%M:%S'
testTime = sys.argv[1]
try:
    print int(time.mktime(time.strptime(testTime, ENGINE_TIME_FORMAT)))
except:
    print "Time to convert %s" % testTime
    raise

Затем я попытался использовать getline, чтобы присвоить преобразование переменной для сравнения:

cat checkThis.txt| awk 'BEGIN {FS="\n"; RS=""; OFS=";"; ORS="\n"; "./firstDate '2010-03-23T12:56:47'" | getline start_time; close("firstDate"); "./firstDate '2010-03-23T13:56:47'" | getline end_time; close("firstDate");} ("./firstDate $1," | getline) > start_time {$1=$1 ""; print $0}'
Traceback (most recent call last):
  File "./firstDate", line 4, in <module>
testTime = sys.argv[1]
IndexError: list index out of range

Getline работает в BEGIN, и я проверил его в окончательном варианте, но у меня, похоже, есть проблемы в части сравнения скрипта.

Ответы на вопрос(2)

Ваш ответ на вопрос