我在日志文件中将日期和时间打印为“14:09:49.922 UTC 12.08.2015”
要分析少数情况下的日志,我必须从日志中的该日期和时间开始 grep 接下来的 X 秒。
注意:时区可能会有所不同。
我使用 grep 和 for 循环来根据给定时间迭代秒、分钟或小时。
我正在寻找的帮助是 date 命令中增加秒数的选项,这样如果我将 x 秒添加到给定时间戳,则日期、月年、小时、分钟和秒应该相应更新。
例如:23:59:59 UTC 31.12.2015"+ 1 秒应返回“00:00:00 UTC 01.01.2016”。
基本上,我在 date 命令中寻找选项,而不是手动检查秒数是否超过 59,然后增加分钟等等。
如何使用日期实用程序在 shell 脚本中实现此目的?
最佳答案
日期命令不支持“14:09:49.922 UTC 12.08.2015”格式。
所以我转换为“14:09:49.922 UTC 08/12/2015”,然后使用日期实用程序如下
DATE="14:09:49 UTC 12.08.2015"
NEXT_DATE=`echo $DATE | awk '{ split($3,a,"."); print $1" "$2" "a[2]"/"a[1]"/"a[3]}'`
TIME_ZONE=`echo $NEXT_DATE | awk '{print $2}'` NEXT_DATE=`TZ="$TIME_ZONE" date +"%H:%M:%S %Z %m/%d/%Y" -d "$NEXT_DATE + 1 second"`
GREP_DATE=`echo $NEXT_DATE | awk '{ split($3,a,"/"); print $1" "$2" "a[2]"."a[1]"."a[3]}'`
grep $GREP_DATE logfile
关于linux - shell 脚本: Increment seconds to date printed in logs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31989776/