用于从过去一小时打印system.log文件的Shell脚本

时间:2014-11-11 12:00:42

标签: macos bash shell awk

我正在尝试在Mac OS X上读取过去一小时内所有记录的system.log文件。我已经搜索了其他问题,但是他们的解决方案都没有对我有用,可能是因为我在Mac OS X上?

我可以使用awk命令在system.log文件中读取下面代码中两个日期/时间之间列出的所有记录。然后将其写入文本文件并阅读其内容以供进一步分析。

awk '$0 >= "Nov 11 09:15:00" && $0 <= "Nov 11 10:15:00"' /var/log/system.log > newfile.txt

但是我希望能够使用当前时间和当前时间(1小时)自动计算时间。

我能够使用此代码显示当前时间和当前时间 - 1小时。

now=$(date +"%b %d %H:%M:%S")
hourago=$(date -v-60M "+%b %d %H:%M:%S")

但无法在awk声明中找到使用此方法。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

尝试类似的内容:

awk 'BEGIN {now=system("date +\"%b %d %H:%M:%S\"")}'

答案 1 :(得分:0)

你可以尝试

awk 'BEGIN {now=strftime("%b %d %T")}'

%T%H:%M:%S

的快捷方式

答案 2 :(得分:0)

您可以使用strftime打印当前时间。以及strftimesystime的组合,以便在前一个小时内完成

例如用法

$ awk 'BEGIN {now=strftime("%b %d %T");hourago=strftime("%b %d %T", systime()-3600); print now, hourago}'
Nov 11 19:11:22 Nov 11 18:11:22

它的作用??

  • systime()-3600 systime()打印自Epoch以来经过的秒数。 -3600会减少一小时。 strftime返回相应时间的时间,即比当前时间小{1}}
  • 1小时