匹配perl后第一次出现字符串

时间:2013-01-06 21:40:26

标签: perl

我正在用perl解析一个pcap文件。我有要求和回应。我想找到所有未完成的交易(请求没有响应)。我的请求看起来像 ReqInfo,ReqData,ReqMsg和响应RespInfo,RespData,RespMsg。我已经完成了Req和Resp的基本计数。请求的数量大于响应1.它是大文件,无法确定错过了哪个请求。我只管理了

perl -lne 'END {print $c} map ++$c, /ReqInfo/g' file.pcap

请求和响应由transactionID绑定。我计划在每次成功的ReqInfo之后将transactionID添加到数组,并在每次RespInfo匹配后从数组中删除transactionID。在整个搜索之后,我期望数组具有所有孤立事务ID的列表。因为它是pcap文件,所以没有带分隔符的规则。我可以在单行中使用一堆Req,或者在单独的行中使用每个Req,或者在多行中使用碎片数据

我正在寻找在ReqInfo之后找到第一次出现的transactionID的方法。我可以在一行中使用一堆ReqInfo,或者在单独的行中使用每个ReqInfo,或者在多行中包含碎片数据

1 个答案:

答案 0 :(得分:1)

在找到请求时,

++$c{$tran_id}

在找到回复时,

--$c{$tran_id}
  • 具有相同数量的请求和响应的任何事务的得分均为零。
  • 任何错过回复的交易都会以正分数结束。
  • 任何错过请求的交易都会以负分数结束。