• 【awk】按小时切割日志


    需求:

    把日志按日志内容中的小时数做切割

    {hostname=ali-beijing-msync-3512} 2017-05-17 23:17:52.694 [info] <0.27292.7053>@msync_c2s_lib:delete_pb_jid_entry:266  delete pb jid {'JID',<<"17zuoye">>
    {hostname=ali-beijing-msync-3513} 2017-05-17 23:17:52.694 [info] <0.27292.7053>@msync_c2s_lib:delete_socket_entry:164  delete socket #Port<0.34411764>  

    这种字符处理的工作非sed,awk莫属了

    下面是我用awk完成的单行代码

    1 awk --re-interval 
    2     '/^{[^ ]+} [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/{    # 一定要清楚的知道正常的日志是什么样子,因为日志中不排除有异常栈之类的错误信息,这就导致awk异常
    3         fn=gensub(/[^ ]+ ([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):[0-9]{2}:[0-9]{2}.[0-9]+ .*/,"\1\2\3\4","g");    #gensub提取你需要的信息
    4         if(fn != lastdate){
    5             if(lastdate != "") close(outfile)    #及时关闭上一个文件
    6         };
    7         lastdate=fn;
    8         outfile=sprintf("ejabberd-login-log_%s",fn);    #你需要生成的日志文件名
    9         print >> outfile}'

      

  • 相关阅读:
    MongoDB小结07
    MongoDB小结07
    MongoDB小结06
    MongoDB小结05
    MongoDB小结04
    MongoDB小结03
    MongoDB小结02
    MongoDB小结01
    this与super
    UVa 11174
  • 原文地址:https://www.cnblogs.com/txwsqk/p/6895956.html
Copyright © 2020-2023  润新知