使用awk在文本文件中查找匹配日期范围的数据

时间:2014-12-30 18:51:43

标签: linux bash date

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

以下是数据文件的示例 - cols 1和2是日期和时间,cols 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天有关的记录?

1 个答案:

答案 0 :(得分:0)

坏消息:标准awk没有日期处理功能,日期处理是shell脚本的命中或遗漏事件。 GNU和BSD版本的date命令都可以使用date命令来检查日期,但两者都使用完全不同的语法。

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

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

您需要对日期进行一些重新格式化,但一旦完成,您将获得自时代(通常是1970年1月1日)以来的秒数

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