awk sed综合使用检测日志的脚本一条

工作中常会用串口打印日志,在secureCrt中做:


这样的设置,打印出来的日志为:

09:11:21.998  :eload pin is High!
09:11:22.023  :RC48MHzCaliSysClk=49440000
09:11:22.048  :Start to run....
09:11:22.061  :smtlk_sign= 0
09:11:22.061  :
09:11:22.061  :
09:11:22.176  :!!!!!!!!!sdk version(HSF-V1.40-201503201010-LPB100-128-16B),the app_main start time is May 16 2017 23:19:04
09:11:22.210  :!!!!! the version num is(000)_______
09:11:22.243  :erase address=be000 page cnt=1
09:11:22.276  :erase address=bf000 page cnt=1

这样有规律的格式,当拷机测试时,可能出现定时器到了某些操作没有执行的情况(比如心跳),于是使用下面脚本就能很快在很大的日志文件中,找到有用的信息:


#!/bin/bash

fn=$1
kw=$2
it=$3


cat $fn |sed -n "/${kw}/p"|awk -F ':' '{if(be != 0){v=($1-a)*3600+($2-b)*60+$3-c} if(v<0){v=v+86400}be=1;a=$1; b=$2; c=$3;  if(v-"'${it}'"> 3 || v-"'{it}'" < -3) print $1":"$2":"$3,v}'
其中 $1是日志文件名, $2是关键字 , $3是时间间隔

你可能感兴趣的:(随手乱记)