根据文件名获取两个日期之间的日志

时间:2019-01-22 09:52:00

标签: linux bash logging

如何获取两个日期之间的所有日志文件,我的日志文件名称包含创建日期:
x-node0-1-22.09.2018 =>创建于2018年9月22日。
预先感谢

2 个答案:

答案 0 :(得分:0)

ls -1|awk -F'[-.]' -v from='01.08.2018' -v to='01.10.2018' 
    '{split(from,f);from=f[3]f[2]f[1];
        split(to,t);to=t[3]t[2]t[1];
        d=$NF$(NF-1)$(NF-2)}d>=from&&d<=to'

此行应该起作用。

注意:

  • 因为您的示例文件名不包含任何特殊字符,所以我很懒,并使用ls结果作为输入。不推荐。

  • 您可以更改fromto参数。

  • 在日志文件目录下执行命令。

使用一些数据进行测试

kent$  ls -1
x-node0-1-22.08.2018
x-node0-1-22.09.2018
x-node0-1-31.08.2018
x-node0-1-31.10.2018

kent$  ls -1|awk -F'[-.]' -v from='01.08.2018' -v to='01.10.2018' '{split(from,f);from=f[3]f[2]f[1];split(to,t);to=t[3]t[2]t[1];d=$NF$(NF-1)$(NF-2)}d>=from&&d<=to'
x-node0-1-22.08.2018
x-node0-1-22.09.2018
x-node0-1-31.08.2018

答案 1 :(得分:-1)

您可以使用awk命令,如以下示例所示,该命令从syslog读取1月21日至1月22日的日志


/ var / log $ awk'/ Jan 21 /,/ Jan 22 /'syslog


您可以通过以下链接阅读更多信息: https://coderwall.com/p/ueazhw/parsing-logs-with-awk