【问题标题】:Get lines from a specific date afterwards/backwards之后/向后获取特定日期的行
【发布时间】:2015-03-17 18:53:47
【问题描述】:

我正在编写一个 shell 脚本。我需要获取包含那天或更早的信息的行。在文件中,每一行都是一条记录,第一行是旧的,最后一行是最新的。 该文件包含:

一些信息\t日期\t其他信息

如果我只是简单地 grep 给定的日期,我会找到我要查找的内容,但前提是该日期存在于文件中。我找到最后一次出现并从文件开头获取行。我试过 awk 但我完全失败了。它应该给我每一行包含该日期或更早的内容。我的失败和最后一次尝试:

awk '$1

所以我需要类似于 egrep 的东西,但它会为我提供日期为 2015/03/15 或更早的所有行。或者我是否必须走遍每一行并比较这两个日期,如果它更旧的话,根据那个写出来的?

【问题讨论】:

  • 在您描述的输入中,datesecond 字段(在制表符分隔的文件中)。你能解释一下你的“尝试”吗?

标签: shell date awk


【解决方案1】:

应该很容易,因为您使用的日期格式可以作为字符进行比较..

文件:test.txt

a       2015/03/17      b
c       2015/03/12      d
e       2014/02/10      f
g       2016/01/01      h

awk 命令:

awk -v d="2015/03/15" '{if ($2 <= d) {print $0}}' test.txt

只需将 d= 更改为您想要的任何日期值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多