对 Web 日志里的 URL decode 后做分析

有些日子没有写脚本,手都有点生了。 今天有人说手机上某个功能不能使用,看了下 Web 日志, URL 都是 Encode 的,需要 Decode 再分析里面的 json 数据。所q以有了这段代码。

#!/bin/bash

function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }

LOG="/var/log/nginx/xxxx.log"
DB="db_name"
C=0
E=0

for ord in $(
        for u in $(grep "confirm_order" $LOG|awk '{print $7}')
        do
                urldecode $u;
        done|awk -F= '{print $NF}'|jq -r .hexiaoNo|sort|uniq)
do
  res=$(mysql $DB -Nq -e "select id from t_order where recouncile_code='"$ord"'")
  [ -z "$res" ] && echo "核销单据 $ord 录入失败!" && E=$(( $E + 1))
  C=$(( $C + 1))
done
echo "一共录入 $C 条核销单据(含 $E 条失败)"

这代码里核心的就是 urldecode 一行函数。
后面无非就是从日志里,用 jq 命令解析对应 json 串字段里的内容,然后去数据库对应的订单表内查找是否有该核销单据号码,如果没有说明录入数据失败。