Linux比较时间&循环处理文件

log格式:

2018-01-11 18:08:08,993 [http-bio-8080-exec-30] INFO  [cn.letv.mstore.api.util.Log] - CheckUpdateController|checkupdate|106.114.85.182||862044035460430|602001|20|20|||-1|1084|5

脚本如下:

#!/bin/bash

date1="2018-01-11 15:14:53"
date2="2018-01-11 15:56:18"

#计算时间戳
t1=`date -d "$date1" +%s`
t2=`date -d "$date2" +%s`

#循环log
cat mstore.log |while read line  
do
  #提取行前19位
  t=${line:0:19}
  ct=`date -d "$t" +%s`
  #比较时间区间
  if [[ $t1 -lt $ct ]] && [[ $t2 -gt $ct ]];then
    #提取行中的第5列,已|分割
    echo $line|cut -d"|" -f5
  fi
done

注:

    这种方式处理的特别慢,不妨在log进入循环前尽可能多的过滤掉无用的log。比如:cat mstore.log|grep 2018-01-11\ 15|while read line

 

粗略计算:

#直接过滤15点10分到16点的数据提取
cat mstore.log|grep '2018-01-11 15:[1-5]\{1\}'|cut -d"|" -f5

提取多项信息:

#过滤多串数字,以“|”分割,第9列长度大于0,打印一行的前19个字符
cat mstore.log.2018-01-20|grep CheckUpdateController\|checkupdate\||grep '866479022302706\|869841021330029'|awk -F "|" '{if(length($9)>0) print substr($0,0,19),$5,$9}'

 

转载于:https://my.oschina.net/u/737390/blog/1605763

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值