#!/usr/bin/perl use strict; local $/ = "QE)"; my %hash; while () { s/BS:\s(\w+).*QE\)//; $hash{'BS'} = $1; do { local $/ = "\n"; s/(\w+) \((\d)\% \/ (\d) of \d+ \| event (\d)\% \/ (\d) of \d+\)//; print "$hash{'BS'}\t$1\t$2%\t$3\t$4%\t$5\n" if ( defined($2) ); } } __DATA__ AAA_AA1_DDD (0% / 0 of 1024 | event 0% / 0 of 1024) AAA_AA2_DDD (0% / 0 of 1024 | event 0% / 0 of 1024) BS: 111_DDD, QE: QQQ_DDD (additionnal QE) BBB_BB1_DDD (0% / 0 of 1024 | event 0% / 0 of 1024) BBB_BB2_DDD (0% / 0 of 1024 | event 0% / 0 of 1024) BS: 222_DDD, QE: QQQ_DDD (additionnal QE) CCC_CC1_DDD (0% / 0 of 1024 | event 0% / 0 of 1024) CCC_CC2_DDD (0% / 0 of 1024 | event 0% / 0 of 1024) BS: 333_DDD, QE: QQQ_DDD (additionnal QE)