perl 跨行匹配文件内容 双层过滤

来源:互联网 发布:知豆电动汽车汽车之家 编辑:程序博客网 时间:2024/05/20 21:19

日志特点:分段,格式固定;取出所需数字 按格式写到另外的文件


需要用perl实现将made和lose的数据如数到result.txt文件中,结果数据格式如下:Teacher:6 4 6 4 6 4Student:6 4 6 4 6 4数字之间用tab间隔
#!/bin/perl -wuse strict;my ($a, $b, $c);open my $data , "< data.txt" or die $!;while (<$data>){ if (/^Teacher/sbegin/sfirst/ .. /^pass/ssucceed/) { if (/^Ball/) { chomp($a =(split ':', $_)[4]); $b .= $a."/t"; } } if (/^Student/sbegin/sfirst/ .. /^pass/ssucceed/) { if (/^Ball/) { chomp($a =(split ':', $_)[4]); $c .= $a."/t"; } }}close $data;open my $fh, ">result.txt";print $fh "Teacher:/n"; print $fh $b."/n";print $fh "Student:/n"; print $fh $c."/n";close $fh;=head__DATA__We will test Group1...Teacher begin first -name A:applaud number 100:not applaud number 100Ball number:10 :attempt:10 made:6Ball number:10 :attempt:10 lose:4pass succeedWe will test Group1...Teacher begin first -name B:applaud number 100:not applaud number 100Ball number:10 :attempt:10 made:6Ball number:10 :attempt:10 lose:4pass succeedWe will test Group1...Teacher begin first -name C:applaud number 100:not applaud number 100Ball number:10 :attempt:10 made:6Ball number:10 :attempt:10 lose:4pass succeedWe will test Group1...Student begin first -name A:applaud number 100:not applaud number 100Ball number:10 :attempt:10 made:6Ball number:10 :attempt:10 lose:4pass succeedWe will test Group1...Student begin first -name B:applaud number 100:not applaud number 100Ball number:10 :attempt:10 made:6Ball number:10 :attempt:10 lose:4pass succeed=cut