【问题标题】:Error while extracting data from log file从日志文件中提取数据时出错
【发布时间】:2015-03-04 18:03:31
【问题描述】:

我正在运行 awk 命令从日志文件中提取数据以使用以下命令计算过去 15 分钟的日志,现在我收到以下错误:

awk '$0>=$from' from=$(`date -u +"####<%d-%b-%Y %H:%M:%S o'clock GMT>"-15min`) test.log

错误:

date: 0551-402 Invalid character in date/time specification.
Usage: date [-u] [+"Field Descriptors"]
awk: 0602-562 Field $() is not correct.
 The input line number is 1. The file is test.log.
 The source line number is 1.

谁能看出问题出在哪里?

【问题讨论】:

  • 去除多余的反抽

标签: shell date awk


【解决方案1】:

我相信你的意思

awk '$0 >= from' from=$(date -u -d -15min "+####<%d-%b-%Y %H:%M:%S o'clock GMT>") test.log
  • awk 代码中的$from 不是指from 的值,而是fromth 字段。如果 field 不是数字,这没有任何意义。
  • date 调用中的 -15min 是格式说明符的一部分,而不是日期说明。
  • 反引号或$(),不能同时使用。除非您想将date 的输出作为命令运行并使用它的输出。

顺便说一句,我怀疑以这种方式格式化的日期字符串的字典比较不会产生您想要的结果。它不会导致在所有情况下都认为较晚的日期大于较早的日期——尤其是在月份的结束/开始时。 28-Feb 在字典上大于 01-Mar

附录:啊,我觉得这似乎很熟悉。我给your previous question 留下了一个解决方案,在它被关闭之前没有这个问题,因为它与在这种情况下实际上不起作用的东西的重复。

【讨论】:

  • 这是非常有用的 Wintermute。谢谢 :-) 。我该如何纠正,即日期的字典比较?
  • 查看我对您上一个问题的回答(我已链接到它)。基本思想是:不是按字典顺序比较日期,而是将它们转换为可以数字比较的东西,例如自 Epoch 以来的秒数。
猜你喜欢
  • 2022-10-13
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 2017-07-04
  • 2016-07-05
相关资源
最近更新 更多