#!/bin/awk -f ############################# # clean data and filter some to rediect to new file # Author: Liao # modify time: 2022/2/17 17:05 (+8:00) ############################# BEGIN{ # filePath = "/data/log_dir/mySimpleLog" # system("echo '\n\n\n----------' >> "awk_run_log_path" && date '+%x %X' >> "awk_run_log_path) #dp_recv_from_device = @/ dp rept_type:[0-9]+, data:/ #dp_is_condition = @/dp [0-9]+ match/ #dp_not_condition = @/no id match/ #pattern = @/([0-9]+-[0-9]+ ([0-9]+:){3}[0-9]+)/ # #connection_check_ok = @/condition set is ok,then execute action set./ # Get form OS } $0~/ dp rept_type:[0-9]+, data:/ { atime = match($0,/[0-9]{1,2}-[0-9]{1,2} ([0-9]{1,2}:){3}[0-9]{1,3}/) ? substr($0,RSTART,RLENGTH):null; adps = match($0,/\{.+\}/) ? substr($0,RSTART,RLENGTH):null; # print "atime:"atime,"adps:"adps aLogJson = "{ \"time\":"atime", \"event\":\"dp report\", \"dps\":"adps"}" # log2file(aLogJson) } $0~/rev id:\w+ cmd:\{.*\} type:0/ { atime = match($0,/[0-9]{1,2}-[0-9]{1,2} ([0-9]{1,2}:){3}[0-9]{1,3}/) ? substr($0,RSTART,RLENGTH):null; adps = match($0,/cmd:\{.+\} /) ? substr(substr($0,RSTART,RLENGTH),5,RLENGTH-5) : $0; devMac = match($0,/rev id:\w+/) ? substr(substr($0,RSTART,RLENGTH),8) : null # print $0 if((getline conditionLine) > 0){ isCondition = match(conditionLine,/(no id match|no dp match)/) ? "false" : match(conditionLine,/dp [0-9]+ match/) ? "true" : "unkown" # print conditionLine # print "isCondition:"isCondition condition = "\"isCondition\":"isCondition if (isCondition=="true"){ # conditionDp = match(conditionLine,/dp [0-9]+ match/) ? substr(conditionLine,RSTART,RLENGTH) : "" conditionDp = match(conditionLine,/\] dp [0-9]+ match/) ? substr(substr(conditionLine,RSTART,RLENGTH),6,RLENGTH-11) : "" condition = condition",\"conditionDp\":"conditionDp } }else{ print "no more line" } aLogJson = "{ \"time\":"atime", \"event\":\"linkage recv dp\", \"dps\":"adps",\"devMac\":\""devMac"\","condition"}" log2file(aLogJson) } # $0~/dp [0-9]+ match/{ # } $0~/condition set is ok,then execute action set\./ { # print $0 atime = match($0,/[0-9]{1,2}-[0-9]{1,2} ([0-9]{1,2}:){3}[0-9]{1,3}/) ? substr($0,RSTART,RLENGTH):null; aruleid = match($0,/scene:\w+,/) ? substr(substr($0,RSTART,RLENGTH),7,RLENGTH-7) : "false" log2file("{ \"time\":"atime", \"ruleid\":\""aruleid"\",\"triggerNow\":\"true\"}") } END{ } function matchRet(reg ,RSTART,RLENGTH){ #print reg if(match($0,$reg)){ return substr($0,RSTART,RLENGTH) }else{ return "Nothing Matched" } } function log2file(logJson){ system("echo -e '"logJson"' >> /data/log_dir/mySimpleLog") }