RLX_logClean/logDataClean.awk

82 lines
2.6 KiB
Awk

#!/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")
}