提取非标准日期范围内的行,许多日期。例如:2015-08-01 17:00:00至2015-08-02 05:00

时间:2015-08-18 13:33:28

标签: regex datetime text-parsing

很早,请原谅我缺乏口头上的技巧。

我有一个文件,其中包含我想根据日期和时间范围进行子集化的记录。具体从第一天的17:00到第二天的05:00,包括在内。

UniqueData, 2015-08-01 17:00:00,MiscNotImportantData    
UniqueData, 2015-08-01 17:00:00,MiscNotImportantData    
UniqueData, 2015-08-01 17:00:00,MiscNotImportantData
...
UniqueData, 2015-08-02 05:00:00,MiscNotImportantData    
UniqueData, 2015-08-02 05:00:00,MiscNotImportantData    
UniqueData, 2015-08-02 05:00:00,MiscNotImportantData
  1. 月份不会改变。
  2. 时间以30秒为单位递增。
  3. 11条记录将包含相同的日期和时间。时间,但在日期和时间之前包含唯一数据。
  4. 最后,我想要的是一个包含循环记录的文件(例如:一个文件,记录来自2015-08-01 17:00:00到2015-08-02 05:00 :00)

    我的正则表达式/ grep / etc foo很弱。使用Java,Perl或任何Linux命令行工具的实现将非常有用。

    有人能指出我正确的方向吗?

    谢谢!

1 个答案:

答案 0 :(得分:2)

我可能会使用awk

awk -F, '$2 >= " 2015-08-01 17:00:00" && $2 <= " 2015-08-02 05:00:00"' data

在逗号上拆分字段。观察数据以空白开头。如果字段2落在指定范围内,则打印数据行。

这适用于任何有效格式化的日期。如果您有包含2015-08-01 99:99:99的记录,那么也会选择该记录。它不依赖于数据文件中连续的行,尽管它们很可能会存在。