Shell脚本:增加日志中打印的秒数

时间:2015-08-13 13:33:38

标签: linux bash shell date

我在日志文件中打印的日期和时间为“14:09:49.922 UTC 12.08.2015”

要在几个实例中分析日志,我必须在日志中从此日期和时间开始查看下一个X秒。

注意:时区可能会有所不同。

我已经使用grep和for循环来迭代秒或分钟或小时,具体取决于给定时间。

我正在寻找的帮助是date命令中的选项,以增加秒数,这样如果我对给定的时间戳加上x秒,则应相应地更新日期,月份,小时,分钟和秒。

Eg:23:59:59 UTC 31.12.2015“+ 1 seond should return”00:00:00 UTC 01.01.2016“。

基本上我在日期命令中寻找选项而不是我手动检查秒数是否超过59然后递增分钟等等。

如何使用日期实用程序在shell脚本中实现此目的?

1 个答案:

答案 0 :(得分:0)

日期命令不支持" 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