从日志文件中提取数据时出错

时间:2015-03-04 09:49:50

标签: shell date awk

我正在运行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.

任何人都可以看到问题所在吗?

1 个答案:

答案 0 :(得分:2)

我相信你的意思

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

顺便说一下,我怀疑以这种方式格式化的日期字符串的词典比较不会产生你想要的结果。在所有情况下,这都不会导致后来的日期被认为比以前的日期更大 - 特别是在月末/月初。 28-Feb按字典顺序大于01-Mar

附录:啊,我觉得这看起来很熟悉。我在your previous question之前留下了一个没有这个问题的解决方案,因为这个问题在这个案例中并没有真正起作用。