【问题标题】:Using awk to find data matching date range in text file使用 awk 在文本文件中查找匹配日期范围的数据
【发布时间】:2014-12-30 18:51:43
【问题描述】:

我有一个文本文件,其中包含来自五个传感器的日期戳和温度值,并且每十分钟用新的数据行更新文件。

这是数据文件的示例 - 第 1 列和第 2 列是日期和时间,第 3 到 7 列是温度值:

31-12 04:40 19.6 20.5 18.3 21.3 12.5
31-12 04:50 19.6 20.4 18.3 21.3 12.7
31-12 05:00 19.5 20.4 18.2 21.2 12.6
31-12 05:10 19.5 20.4 18.2 21.2 12.5
31-12 05:20 19.5 20.4 18.5 21.2 12.1

如何使用 awk 从数据文件中提取与过去 24 小时、过去 7 天、过去 28 天和过去 365 天相关的记录?

【问题讨论】:

  • 以 sed -n '/31-12 04:40/ , /31-12 05:20/p' temperature.dat 为例,但我正在寻找可以返回的东西从现在开始的一天、一周、一个月、一年,而不是过去的指定时间间隔,如果你明白我的意思的话。我不确定 awk 是否适合这项工作。

标签: linux bash date


【解决方案1】:

坏消息:标准awk 不具备日期处理功能,而日期处理对于 shell 脚本来说是一个偶然事件。 date 命令的 GNU 和 BSD 版本都可以使用 date 命令检查日期,但两者使用完全不同的语法。

如果您使用gawk 或带有awk 的Linux,您可以尝试mktime 功能:

date="20141225011522"   # December 25, 2014 at 1:15:22
date_in_seconds = mktime( date )

您需要对日期进行一些重新格式化,但一旦完成,您将返回自 纪元(通常为 1970 年 1 月 1 日)以来的秒数.

顺便说一句,您需要包含您尝试过的示例,以及您在代码本身中遇到的问题,否则您的问题将被关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2014-10-20
    • 2019-05-08
    相关资源
    最近更新 更多