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

Macos 用于打印过去一小时的system.log文件的Shell脚本,macos,bash,shell,awk,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

我正在尝试读取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
但是在
awk
语句中找不到使用此选项的方法


非常感谢任何帮助

试试类似的方法:

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

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

%T
%H:%M:%S

的快捷方式。您可以使用
strftime
打印当前时间。以及
strftime
systime
的组合,以在前一小时获得

乙二醇使用

$ 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()<代码>-3600比这减少了一个小时。
    strftime
    返回与该秒相对应的时间,即比当前时间短1小时,
    now

awk
中,您可以使用
system()
strftime()
mktime()
函数。Read我看到一条错误消息,
strftime
是一个未定义的函数。感谢
%T
的提示。很抱歉,我不知道Mac OS X的细节。我假设Mac OS X上的
awk
版本与Linux版本相同。测试您自己,看看
%T
是否可以在Mac OS X上正常工作。谢谢您的帮助。我还添加了代码来显示当前时间-1小时:
awk'BEGIN{hour=system(“date-v-60M+\%b%d%H:%M:%S\”)}
@Tom您可以使用
-1h
而不是
-60M
,当然这很有意义。现在我有了这两次,我是否需要将它们存储为变量并将它们调用到我的awk语句中?谢谢。似乎不支持
strftime()
,因为它显示为一个未定义的函数。但是我已经将代码改为使用
system()
,这很有效。它还会在时间之后打印两个零,为什么会这样?@Tom您看到的零是
system
中给出的命令的退出状态现在
system
的问题是您无法将命令输出到变量。它只是执行命令。这是指A.M.D的答案
now
变量将包含
0
而不是时间。这是日期的退出状态command@Tom
strftime()。您可以使用
gawk
来代替
awk
,这将与答案中的上述脚本配合使用。感谢您提供此信息。似乎
gawk
也不起作用,因为我看到“command not found”错误。@Tom默认情况下Osx不提供
gawk
您可以下载并安装它
$ 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