linux - 使用linux计算两个日期之间的时间差
问题描述
早上好。我有两个名为a.txt
和的文本文件b.txt
,其中包含以下格式的数据,如下所示
year mn dt hr:mn:sec
xxxx-xx-xx xx:xx:xx.xxxxxx
我的 a.txt 文件是
2019-01-01 00:58:49.925000
2019-01-01 01:48:39.665000
2019-01-01 15:42:18.955000
2019-01-01 18:40:49.915000
2019-01-01 18:47:00.735000
2019-01-01 21:07:49.255000
2019-01-01 21:52:29.055000
2019-01-02 03:19:54.955000
2019-01-02 07:41:27.845000
2019-01-02 18:52:32.995000
b.txt 文件包含
2019-01-01 00:58:50.565000
2019-01-01 01:48:39.915000
2019-01-01 04:09:53.705000
2019-01-01 06:28:07.515000
2019-01-01 15:43:13.455000
2019-01-01 18:40:53.255000
2019-01-01 18:47:04.005000
2019-01-01 18:47:03.975000
2019-01-01 21:07:53.725000
2019-01-01 21:52:37.195000
2019-01-02 07:41:34.255000
2019-01-02 19:41:08.865000
此外,每个文本文件(a.txt 和 b.txt)都包含 14 行,包括空格。
现在我想以a.txt-b.txt
秒为单位计算每行之间的时间差(
我做了如下的事情:
#!/bin/sh
a=`cat a.txt`
b=`cat b.txt`
awk '{print $a-$b}'
解决方案
根据对您问题的一种可能解释,将 GNU awk 用于mktime() :
$ cat tst.awk
!NF { next }
{ gsub(/[-:]/," ") }
NR==FNR {
file1[NR] = $0
next
}
FNR in file1 {
diff = mktime($0) - mktime(file1[FNR])
if ( (3 <= diff) && (diff <= 18) ) {
print diff
}
}
$ awk -f tst.awk a.txt b.txt
4
4
4
8
7
显然只是添加> c.txt
重定向输出。
如果这不是您需要的,请编辑您的问题以阐明您的要求并根据您发布的示例输入提供预期的输出。
推荐阅读
- google-sheets - 问:谷歌表格 - 插入列后静态单元格引用发生变化
- php - 无法从 archive.php 中调用的函数获取 get_queried_object()
- reactjs - 更改响应标题
- javascript - Bootstrap 4轮播jQuery没有按预期工作
- angular - AgGrid:与 cellRendererFramework 中的输出参数交互
- css - Arial Narrow 不能用作“本地”字体
- git - Git 命令显示最后一个 git pull 修改、删除和添加的文件附带了什么
- angular - Angular 4 指令对页面加载没有影响
- java - 如何在第二个点java之后找到第一个字符
- python - 在 Wine 下运行的 Python 3.5.5 使用空字符串名称设置环境变量