【发布时间】:2021-12-01 04:39:20
【问题描述】:
我有以下 sample.txt 文件:
2021-10-07 10:32:05,767 ERROR [LAWT2] blah.blah.blah - Message processing FAILED: <ExecutionReport blah="xxx" foo="yyy" SessionID="kkk" MoreStuff="zz"> Total time for which application threads were stopped: 0.0003858 seconds, Stopping threads took: 0.0000653 seconds
2021-10-07 10:31:32,902 ERROR [LAWT6] blah.blah.blah - Message processing FAILED: <NewOrderSingle SessionID="zkx" TargetSubID="ttt" Account="blah" MsgType="D" BookingTypeOverride="0" Symbol="6316" OtherField1="othervalue1" Otherfield2="othervalue2"/></D></NewOrderSingle>
我只想获取两个关键字段:“SessionID”和“MsgType”并像这样打印:
SessionID="kkk"|
SessionID="zkx"|MsgType="D"
换句话说:如果组匹配不存在,我只想打印空白。
我尝试了以下方法,但没有成功:
$$ perl -ne '/ (SessionID=".*?")? .*(MsgType=".*?")? / and print "$1|$2\n"' sample.txt
SessionID="kkk"|
SessionID="zkx"|
有人可以在这里启发我吗?非常感谢。
【问题讨论】: