linux Shell指令碼匹配日誌

2021-08-17 07:03:39 字數 2538 閱讀 3474

業務需求:

1、找出承保成功的投保請求報文

readfile.sh 內容如下

#!/bin/bash

num=1 ##計數器

while read line

dotoday=`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 "$" $filename |grep '承保成功' |grep 'transrefguid' |sed -nr '/.*<\/transrefguid>/s_.*([^<]*).*_\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: ''`

if [ $guidline ];then

sed -n "$,~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: ''`

flagnum=$[guidlinev-4] ##找到了行號減4行,移動到請求報文開頭

else

##沒有核保就不用過濾

flagnum=$[guidline-4] ##找到了行號減4行,移動到請求報文開頭

fiecho "存在於檔案==$filename" >>/picclife/zhanglw/findlog1

sed -n "$,/^<\/txlife>/p" $exitfile$line.log > $exitfile$line.xml

echo $line >> $exitfile''findpolicynum1 ##記錄下來,後續和總數對比,再找出無法找到的保單

else

##echo "***************************>" >>/picclife/zhanglw/findlog1

echo "*****不存在於檔案==$filename" >>/picclife/zhanglw/findlog1

fielse

##echo "-------------------------->" >>/picclife/zhanglw/findlog1

echo "-----不存在於檔案==$filename" >>/picclife/zhanglw/findlog1

finum=$((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 &

列印出的日誌

-----2018-02-11 11:46:41-----第97個保單號:007699921014158

-----不存在於檔案==nohup.out8001

匹配到的檔案

007699866793158.xml  007699882642158.xml  007699890182158.xml  007699896224158.xml  007699905603158.xml

Linux shell指令碼上引 單引 模式匹配

生成日期日誌,記錄前一天使用的命令 vim mylog.sh bin bash f record touch record sed n 1p student.txt awk record start cat record mydate date y m d sed n start p student...

Linux Shell指令碼基礎

shell指令碼在處理自動迴圈或大的任務方面可節省大量時間,且功能強大。任何指令碼都可能有注釋,加注釋需要此行的第乙個字元為 直譯器對此行不予解釋。指令碼不是複雜的程式,它是按行解釋的。指令碼第一行總是以 bin sh開始,這段指令碼通知shell使用系統上的 bourne shell直譯器。指令碼...

linux shell指令碼犯錯

指令碼裡犯了錯 oracle it shell value 1 oracle it shell value 1 bash value command not found oracle it shell value 3 bash value command not found oracle it sh...