1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #列筛选 awk 'BEGIN { FS = OFS = ","; } { #清除列末尾空格 gsub(/[ ]+$/, "", $18); #字符串链接 $3 = ("{$date} "$3); #负数转正 $16 = ($16 > 0) ? $16 :(-1) * $16; $26 = ($26 > 0) ? $26 :(-1) * $26; trade_no = $10 ; refund_no = ""; if ($23 == "退款") { #获取对应的C单号 refund_no = trade_no; trade_no = ""; $23 = "REFUND"; $38 = ($38 == "S" ? "SUCCESS" : $38); } else { $23 = "SUCCESS"; $38 = ""; }; #C单号放最后面 printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\\n", $3,$4,$5,$8,"","JSAPI",$23,$16,$24,"",$26,$38,$27,$17,$18,trade_no,refund_no }' {$billFile} \ | sed '1d;N;\$d;P;D' > {$tmpFile}
#join 多个文件,通过 FNR==1 第一行时 {f++} 来判断是第几个文件 awk 'BEGIN { FS = OFS =","; printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\\n", "交易时间","公众账号ID","商户号","A订单号","B订单id","交易类型","交易状态","应结订单金额","A退款单号","B退单号","退款金额","退款状态","商品名称","手续费","费率","C订单号","C退单号" } FNR == 1 { f++ } f == 1 { rno2tno[$1] = $2; next } f == 2 { no2id[$1] = $2; next } { refund_no = $17; #根据refund_no取trade_no做兼容 if (refund_no in rno2tno) { $16 = rno2tno[refund_no] } trade_no = $16; if (trade_no in no2id) { $5 = no2id[trade_no] }; if (refund_no in no2id) { $10 = no2id[refund_no] }; print $0 }' {$refundTradeMappingFile} {$mappingFile} {$tmpFile} > {$targetFile}
|