加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 文件中时间之间的差异

发布时间:2020-12-16 01:45:49 所属栏目:安全 来源:网络整理
导读:我有这种格式的文件 02:20:2502:21:0002:22:5402:23:28 02:29:30 .... 我需要计算两个连续行之间的时间差.有没有办法在shell脚本/ awk中执行此操作? 解决方法 一种简单的方法是将每一行转换为秒,然后从当前行中减去前一行.容易在awk.如果这实际上是你想要的
我有这种格式的文件

02:20:25
02:21:00
02:22:54
02:23:28 
02:29:30 
....

我需要计算两个连续行之间的时间差.有没有办法在shell脚本/ awk中执行此操作?

解决方法

一种简单的方法是将每一行转换为秒,然后从当前行中减去前一行.容易在awk.如果这实际上是你想要的,那么这是一种可能性:

awk -f: '{
  seconds = $1*60*60 + $2*60 + $3; 
  print seconds-prev_seconds; 
  prev_seconds=seconds;
}' file.dat

这使得第一个区别变得愚蠢,但这很容易通过默认为相同的值来弥补.它也不会转换回小时,分钟,秒的差异,但我不知道你是否需要它.

但是要修复第一行,就说

awk -f: '{
  seconds = $1*60*60 + $2*60 + $3; 
  if (prev_seconds == 0) prev_seconds = seconds; 
  print seconds-prev_seconds; 
  prev_seconds=seconds;
}' file.dat

现在第一个区别是0,这仍然很奇怪,但并不坏.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读