我有这种格式的文件
02:20:25
02:21:00
02:22:54
02:23:28
02:29:30
....
Run Code Online (Sandbox Code Playgroud)
我需要计算两个连续行之间的时间差.有没有办法在shell脚本/ awk中执行此操作?
一种简单的方法是将每一行转换为秒,然后从当前行中减去前一行.容易在awk.如果这实际上是你想要的,那么这是一种可能性:
awk -f: '{\
seconds = $1*60*60 + $2*60 + $3; \
print seconds-prev_seconds; \
prev_seconds=seconds;\
}' file.dat
Run Code Online (Sandbox Code Playgroud)
这使得第一个区别变得愚蠢,但这很容易通过默认为相同的值来弥补.它也不会转换回小时,分钟,秒的差异,但我不知道你是否需要它.
但是要修复第一行,就说
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
Run Code Online (Sandbox Code Playgroud)
现在第一个区别是0,这仍然很奇怪,但并不坏.
| 归档时间: |
|
| 查看次数: |
3295 次 |
| 最近记录: |