#! /bin/bash
# params like: ./csv2json.sh 0325.txt files/
# $1 --> 0325.txt
# $2 --> files/
input=$1
outdir=$2
tmpinput=$input"-tmp"
# input line format
# 5917022397015166,5917032574511010,1000,2017-03-25 00:47:29,17677127609,100191,0,15111,0,,,90109916,0771,59
# USER_ID,CHARGE_ID,RECV_FEE,RECV_TIME,SERIAL_NUMBER,PAYMENT_ID,PAY_FEE_MODE_CODE,CHANNEL_ID,CANCEL_TAG,
# CANCEL_CHARGE_ID,CANCEL_TIME,PRODUCT_ID,EPARCHY_CODE,PROVINCE_CODE
#生成一个完整的Json格式文件“0325.txt-tmp”
lineformat="{\"USER_ID\":\"%s\",\"CHARGE_ID\":\"%s\",\"RECV_FEE\":\"%s\",\"OPERA_TIME\":\"%s\",\"SERIAL_NUMBER\":\"%s\",\"PAYMENT_ID\"
:\"%s\",\"PAY_FEE_MODE_CODE\":\"%s\",\"CHANNEL_ID\":\"%s\",\"PRODUCT_ID\":\"%s\",\"EPARCHY_CODE\":\"%s\",\"PROVINCE_CODE\":\"%s\",\"KA
FKA_TYPE\":\"%s\",\"CANCEL_TAG\":\"%s\",\"CANCEL_CHARGE_ID\":\"%s\",\"CANCEL_TIME\":\"%s\"}\n"
cat$input|gawk-v lnformat=$lineformat-v tmpinput=$tmpinput-F',''{
if(NF==14) {
userId=$1;
chargeId=$2;
recvFee=$3;
recvTime=$4;
gsub(" ",":",recvTime);
serialNumber=$5;
paymentId=$6;
payFeeModeCode=$7;
channelId=$8;
cancelTag=$9;
cancelChargeId=$10;
cancelTime=$11;
productId=$12;
eparchyCode=$13;
provinceCode=$14;
gsub("\r","",provinceCode);
kafkaType="1";
printf(lnformat,userId,chargeId,recvFee,recvTime,serialNumber,paymentId,payFeeModeCode,channelId,productId,eparchyCode,provinceC
ode,kafkaType,cancelTag,cancelChargeId,cancelTime) >> tmpinput;
}
}'
#将Json格式文件“0325.txt-tmp”分隔为每分钟一个文件,输出到“files”目录下
cat$tmpinput|gawk-F','-v outdir=$outdir'{
idx=index($0,"OPERA_TIME");
if(idx>0)
{
time=substr($0,idx+13,19);
gsub(/[-:]/,"",time);
time=substr(time,1,12);
filename="1"time".txt";
filepath=outdir""filename;
print($0)>>filepath;
close(filepath);
}
}'
#删除Json格式文件“0325.txt-tmp”
rm-f$tmpinput