关键的观察结果是您可以使用字母数字比较来比较时间戳,并获得正确的答案-这就是ISO
8601表示法的妙处。
因此,稍微修改一下代码-并设置格式以避免滚动条:
awk 'BEGIN { FS = "n" RS = "" OFS = ";" ORS = "n" t1 = "2010-03-23T07:45:00" t2 = "2010-03-23T08:00:00" m1 = "eventTimestamp: " t1 m2 = "eventTimestamp: " t2 }$1 ~ /eventTimestamp:/ && $4 ~ /SMS-MO-FSM(-INFO)?$/ { if ($1 >= m1 && $1 <= m2) print $1, $2, $3, $4;}' "$@"显然,您可以将其放入脚本文件中-您不想经常键入它。准确,方便地输入日期范围是其中的难点之一。请注意,我已经调整了时间范围以匹配数据。
在样本数据上运行时,它输出一条记录:
eventTimestamp: 2010-03-23T07:56:19.186;result: Allowed;protocol: SMS;payload: SMS-MO-FSM



