【问题标题】:Trying to fetch the unix logs for a given timeframe [duplicate]尝试获取给定时间范围内的 unix 日志[重复]
【发布时间】:2016-12-16 08:29:39
【问题描述】:

我正在努力从给定时间范围内的文件中获取日志。 我浏览过其他帖子,但日期/时间到处都是硬编码的,我不希望它被硬编码,而是想以编程方式获取它。

这是我一直在尝试的。

这行得通

 awk -F, -v b='2016-08-10 00:40:06' -v e='date +"%F %T"' '{ if ($1 >= b && $1 <= e) print}' filename

虽然这不起作用,

awk -F, -v b='date --date="10 minutes ago" +"%F %T"' -v e='date +"%F %T"' '{ if ($1 >= b && $1 <= e) print}' filename

不确定为什么没有即时计算第一个 Date 参数?

【问题讨论】:

    标签: unix awk sed


    【解决方案1】:

    试试这样的:

     awk -v b="`date --date '10 minutes ago'`" 
    

    例子:

    date;echo 1 2 3 |awk -v d="`date --date '10 minutes ago'`" '{print d}'
    Wed Aug 10 01:57:23 EDT 2016
    Wed Aug 10 01:47:23 EDT 2016
    
    echo 1 2 3 | awk -v d="`date --date '10 minutes ago'`" -v e="`date +%F%T`" '{print d, e}'
    Wed Aug 10 01:50:05 EDT 2016 2016-08-1002:00:05
    

    【讨论】:

    • 一般来说,command substitution 最好使用"$(…)" 表示法,而不是带有反引号的旧"`…`" 表示法(在 Markdown 中难以输入的额外问题) .因为没有嵌套,所以这里并不重要,但一般情况下使用它是个好主意。
    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 2022-07-16
    • 1970-01-01
    • 2021-11-09
    相关资源
    最近更新 更多