业务需求:
1、找出承保成功的投保请求报文
readfile.sh 内容如下
#!/bin/bash
num=1 ##计数器
while read line
do
TODAY=`date "+%Y-%m-%d %H:%M:%S"`
##echo $TODAY
echo "-----$TODAY-----第$num个保单号:$line"
echo "-----$TODAY-----第$num个保单号:$line" >>/picclife/zhanglw/findlog1
##文件
filename="nohup201701051.log"
exitfile='/picclife/zhanglw/exists/' ##文件夹
guid=`grep "${line}" $filename |grep '承保成功' |grep 'TransRefGUID' |sed -nr '/<TransRefGUID>.*<\/TransRefGUID>/s_.*<TransRefGUID>([^<]*)</TransRefGUID>.*_\1_p'`
echo "交易号:$guid" >>/picclife/zhanglw/findlog1
if [ $guid ];then
##查找出现交易流水号的前后200行 生成一个文件
grep -C200 "$guid" $filename >$exitfile$line.log
##在生成的文件中找到交易流水号首次出现的行
guidline=`grep -n $guid $exitfile$line.log |head -1|awk -F: '{print $1}'`
if [ $guidline ];then
sed -n "${guidline},~3p" $exitfile$line.log| grep ">Trial<"| grep 'tc="1"' >/dev/null
if [ 0 -eq $? ];then
echo "核保请求,承保请求在同一个日志中" >>/picclife/zhanglw/findlog1
##过滤掉核保的请求报文
guidlineV=`grep -n $guid $exitfile$line.log |tail -3 |head -1| awk -F: '{print $1}'`
flagNum=$[guidlineV-4] ##找到了行号减4行,移动到请求报文开头
else
##没有核保就不用过滤
flagNum=$[guidline-4] ##找到了行号减4行,移动到请求报文开头
fi
echo "存在于文件==$filename" >>/picclife/zhanglw/findlog1
sed -n "${flagNum},/^<\/TXLife>/p" $exitfile$line.log > $exitfile$line.xml
echo $line >> $exitfile''findPolicyNum1 ##记录下来,后续和总数对比,再找出无法找到的保单
else
##echo "***************************>" >>/picclife/zhanglw/findlog1
echo "*****不存在于文件==$filename" >>/picclife/zhanglw/findlog1
fi
else
##echo "-------------------------->" >>/picclife/zhanglw/findlog1
echo "-----不存在于文件==$filename" >>/picclife/zhanglw/findlog1
fi
num=$((num+1))
done < $1
具体使用
-rw-r----- 1 weblogic bea 1616 02-11 10:59 101.txt
drwxr-x--- 2 weblogic bea 12288 02-11 11:46 exists
-rw-r--r-- 1 weblogic bea 30856 02-11 11:46 findlog1
-rw------- 1 weblogic bea 17553 02-11 11:46 nohup.out
-rw------- 1 weblogic bea 703135661 02-11 11:22 nohup.out8001
-rw------- 1 weblogic bea 481381139 02-11 11:22 nohup.out8002
-rwxr-xr-- 1 weblogic bea 1996 2017-09-13 readfile1.sh
执行命令:nohup ./readfile1.sh 101.txt nohup.out8001 &
打印出的日志
[weblogic@ebsapp02 grepbaowen]$ tail -f nohup.out
-----2018-02-11 11:46:37-----第92个保单号:007699911314158
-----2018-02-11 11:46:37-----第93个保单号:007699911528158
-----2018-02-11 11:46:38-----第94个保单号:007699916266158
-----2018-02-11 11:46:39-----第95个保单号:007699919282158
-----2018-02-11 11:46:40-----第96个保单号:007699920362158
-----2018-02-11 11:46:41-----第97个保单号:007699921014158
[weblogic@ebsapp02 grepbaowen]$ more findlog1
-----2018-02-11 11:38:28-----第1个保单号:007699879947158
交易号:
-----不存在于文件==nohup.out8001
-----2018-02-11 11:38:28-----第2个保单号:007699876503158
交易号:
-----不存在于文件==nohup.out8001
匹配到的文件
[weblogic@ebsapp02 grepbaowen]$ ls exists/
007699866793158.log 007699882642158.log 007699890182158.log 007699896224158.log 007699905603158.log
007699866793158.xml 007699882642158.xml 007699890182158.xml 007699896224158.xml 007699905603158.xml