我想用shell脚本修改日志文件的内容



日志文件的样子07-15:01:07:690848 |1------> 5 AeradminAsst 293103381 | <OpenIdmAssetMarketTradeEvent xRogType="25" BookingType="1" ContraClearingFirm="2781" ExchExecID="2781.5000002000" ExecID="USACO1781000621220607!2781.N.wS.B.F7T/e2" ExecType="F" ExecutingFirm="Aeris" MsgType="8" OrderCapacity="P" OrigExecID="USACO1781000621220607!2781.N.wS.B.F7T/e2" ExternalCustomerAccountSDSID="425e2e91" UniqueTradeId="AERADMINASSET-147-8667655360141328392" MIFIDTradingCapacity="0" OrdType="2" ReportableEntity="12345678" pb_version="trunk-35310"></OpenIdmMarketTradeEvent> | !STOCK/TRADE01/USA/QPA/SUB/PACM001

现在我必须像下面这样修改它的内容。我需要添加开始html标签,并复制ExecID到ExecRefID,然后通过附加"PUSH_"修改ExecID的值. 我还需要改变值ExecType从F到H

07-15:01:07:690848 |1------>  5 AeradminAsst 293103381  |  <OpenIdmAssetMarketTradeEvent xRogType="25" BookingType="1" ContraClearingFirm="2781" ExchExecID="2781.5000002000" ExecID="CANCEL_USACO1781000621220607!2781.N.wS.B.F7T/e2" ExecType="H" ExecutingFirm="Aeris"  MsgType="8" OrderCapacity="P"   OrigExecID="USACO1781000621220607!2781.N.wS.B.F7T/e2"    ExternalCustomerAccountSDSID="425e2e91"  UniqueTradeId="AERADMINASSET-147-8667655360141328392" MIFIDTradingCapacity="0" OrdType="2" ReportableEntity="12345678" ExecRefID="USACO1781000621220607!2781.N.wS.B.F7T/e2" pb_version="trunk-35310"></OpenIdmMarketTradeEvent> | !STOCK/TRADE01/USA/QPA/SUB/SUBM001  

脚本应该处理大量的日志

$ awk '{ 
printf "%sn%sn%sn", 
"<START>", 
gensub(/(.*) (ExecID=)"(.*)" (.*)/,"\1 \2"PUSH_\3" type="OK" TRANID="\3"", 1, $0), 
"</START>"
}' logfile

<START>
07-15:01:56 ClientID="422314" ComplianceID="skdjiowecn33nf" ExecID="PUSH_343ndndn8c" type="OK" TRANID="343ndndn8c"
</START>
<START>
07-15:01:57 ClientID="422e214" ComplianceID="skdjiowecn33nf" ExecID="PUSH_34en3fn" type="OK" TRANID="34en3fn"
</START>
<START>
07-15:01:58 ClientID="42124" ComplianceID="skdjiowecn33nf" ExecID="PUSH_4n23n43" type="OK" TRANID="4n23n43"
</START>

07-15:01:56 ClientID="422314" ComplianceID="skdjiowecn33nf" ExecID="343ndndn8c" Type="NOK"
----------------------------------------------------------- ------- ----------  ----------
|                                  |    | (.*) group3 \3 | (.*) group4 \4
match-groups         (.*) group1 \1                           |
(ExecID=) group2 \2                   

更新第二个日志:

awk '
{
gsub(/>/, " >")
for (i=1; i<=NF; i++){
split($i, a, "=")
attrib=a[1]
value=gensub(/"/,"","g",a[2])
if(attrib == "ExecID"){
$i = attrib"="CANCEL_"value"""
execid=value
}
if(attrib == "ExecType"){
if (value == "F") $i = attrib"="H""
}
if(attrib == "lm_version"){
$i = "pb_version=""value"""
}
if(attrib == "MIDTradingCapacity"){
$i = "MIFIDTradingCapacity=""value"""
$i = $i " OrdType="2""
}
if(attrib == "ReportableEntity"){
$i = $i " ExecRefID=""execid """
}
}
gsub(/ >/, ">")
$0 = "<START>n"$0"n</START>"
}1' logfile
<START>
07-15:01:07:690848 |1------> 5 AeradminAsst 293103381 | <OpenIdmAssetMarketTradeEvent xRogType="25" BookingType="1" ContraClearingFirm="2781" ExchExecID="2781.5000002000" ExecID="CANCEL_USACO1781000621220607!2781.N.wS.B.F7T/e2" ExecType="H" ExecutingFirm="Aeris" MsgType="8" OrderCapacity="P" OrigExecID="USACO1781000621220607!2781.N.wS.B.F7T/e2" ExternalCustomerAccountSDSID="425e2e91" UniqueTradeId="AERADMINASSET-147-8667655360141328392" MIFIDTradingCapacity="0" OrdType="2" ReportableEntity="12345678" ExecRefID="USACO1781000621220607!2781.N.wS.B.F7T/e2" pb_version="trunk-35310"></OpenIdmMarketTradeEvent> | !STOCK/TRADE01/USA/QTA/MAC/TOTAL001
</START>

最新更新