shell脚本处理日志转化为JsonArray

shell脚本
nginx_log_tranfer_json.sh

#!/bin/bash
# nginx 处理日志转化为jsonArray
set -ue
DATE_NOW="2020-09-20 "
DATE_START=`date -d '2020-09-20 00:00:00' +%s`
DATE_END=`date -d '2020-09-20 10:30:00' +%s`

INPUT=$1
OUTPUT="exchange.json"

echo "[" > $OUTPUT
while read line
do
    TIME=$DATE_NOW`echo $line | awk '{print $3}'| awk -F ':' '{print $2,$3,$4}'|sed 's/ /:/g'`
    TIME_F=`date -d "$TIME" +%s`
    if [[ $TIME_F -ge $DATE_START ]] && [[ $TIME_F -le $DATE_END ]]; then 
        
        echo $line | awk -F '[||]' '{print $3}'| awk -F '\"token:'  '{print $1}'  | sed 's/^..//;s/\\//g;s/..$/,/'  >> $OUTPUT
    fi
done < $INPUT
echo "]" >> $OUTPUT

内容demo
1.txt

access.log:192.168.1.1 -  [18/Sep/2023:04:00:04 +0800] " POST /api/open/test1/add?sign=43fdgdfghdtjy7tyjgh HTTP/1.1" 200 469 "" "Java/1.8.0_144" "0.034 0.034 ." "" || "{\"body\":{\"tradeStatusDesc\":\"已发货\",\"empId\":\"QZ117786\",\"definedCode\":\"delivered\",\"address\":\"北京\",\"productId\":\"001\",\"tradeNo\":\"123\",\"identityCardNumber\":\"123\",\"mobile\":\"123\",\"uuid\":\"123\",\"tradeTime\":\"2023-09-18 03:51:52\",\"userMobile\":\"123\",\"tradeStatus\":\"0\",\"waybillCode\":\"11\",\"username\":\"lisi\"}}" "token:Bearer aaa.bbb.ccc"
access.log:192.168.1.1 -  [18/Sep/2023:10:00:04 +0800] " POST /api/open/test1/add?sign=43fdgdfghdtjy7tyjgh HTTP/1.1" 200 469 "" "Java/1.8.0_144" "0.034 0.034 ." "" || "{\"body\":{\"tradeStatusDesc\":\"已发货\",\"empId\":\"QZ117786\",\"definedCode\":\"delivered\",\"address\":\"北京\",\"productId\":\"001\",\"tradeNo\":\"123\",\"identityCardNumber\":\"123\",\"mobile\":\"123\",\"uuid\":\"123\",\"tradeTime\":\"2023-09-18 03:51:52\",\"userMobile\":\"123\",\"tradeStatus\":\"0\",\"waybillCode\":\"11\",\"username\":\"zhangsan\"}}" "token:Bearer aaa.bbb.ccc"

使用

bash nginx_log_tranfer_json.sh 1.txt

你可能感兴趣的:(Linux,shell,开发语言,linux)