【问题标题】:specify time range using unix grep使用 unix grep 指定时间范围
【发布时间】:2014-12-13 02:00:06
【问题描述】:

嗨,我在 hdfs 中的文件很少,现在我必须提取特定范围内的文件。如何使用 unix grep 命令来做到这一点?

我的 hdfs 看起来像这样:

-rw-rw-r--   3 pscore hdpdevs      94461 2014-12-10 02:08 /data/bus/pharma/shared/purch/availability_alert/proc/2014-12-10_02-07-12-0    
-rw-rw-r--   3 pscore hdpdevs     974422 2014-12-11 02:08 /data/bus/pharma/shared/purch/availability_alert/proc/2014-12-11_02-07-10-0    
-rw-rw-r--   3 pscore hdpdevs      32854 2014-12-11 02:08 /data/bus/pharma/shared/purch/availability_alert/proc/2014-12-11_02-07-16-0    
-rw-rw-r--   3 pscore hdpdevs    1936753 2014-12-12 02:07 /data/bus/pharma/shared/purch/availability_alert/proc/2014-12-12_02-06-04-0    
-rw-rw-r--   3 pscore hdpdevs      79365 2014-12-12 02:07 /data/bus/pharma/shared/purch/availability_alert/proc/2014-12-12_02-06-11-0

我想提取从 2014-12-11 09:00 到 2014-12-12 09:00 的文件。 我尝试使用 hadoop fs -ls /dabc | sed -n '/2014-12-11 09:00/ , /2014-12-12 09:00/p' 但这不起作用。有什么帮助吗?我想为此使用 grep 命令

【问题讨论】:

  • 你能指定需要的时间范围吗?
  • 我想提取昨天早上 9:00 到今天早上 9:00 的文件。即 2014-12-11 09:00 到 2014-12-12 09:00
  • 无法使用 find 命令归档这些文件?喜欢this
  • grep 是错误的工具:你能 stat 提取文件的 mtime 吗?
  • 如果您将日期/时间列作为第一列和第二列 + 排序,那么您尝试的方式将起作用。那么 sed 就可以了。

标签: bash unix hadoop


【解决方案1】:
awk '$6FS$7 >= "2014-12-11 09:00" && $6FS$7 <= "2014-12-12 09:00"'

Can I do string comparison in awk?

【讨论】:

    猜你喜欢
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2020-04-17
    相关资源
    最近更新 更多