use strict; use warnings; STDOUT->autoflush(1); my $file = "src_more.txt"; open my $fh, "<", $file or die "$!"; my $line; my %site; my @title; my @table; my $ti; while ( $line = <$fh> ) { if ( $line=~/Device#.*/ ) { dump_table(\@table) if @table; print $&, "\n"; @title = (); @table = (); %site = (); } elsif ( $line=~/^die position: (.*)\s+site (\d+)/i ) { $site{ $2 } = $1; } elsif ( $line=~/^Number/ ) { @title = map { $_ !~/Test Name/i ? split " ", $_ : $_ } split /\s{2,}/, $line; # 只有 Test Name 是包含空格的 title } elsif ( $line=~/^\d+\s+/ ) { $ti = 0; push @table, { map { $title[$ti++] => $_ } split /\s{2,}/, $line }; } } close $fh; dump_table(\@table) if @table; sub dump_table { my $table = shift; for my $d ( @$table ) { if ( $d->{'Result'} =~/PASS/i and $d->{'Test Name'}=~/ib_trim/i ) { printf "%s\t%s\t%s\n", $site{ $d->{'Site'} }, $d->{'Test Name'}, $d->{'Measured'} ; } } } |
Device#: 19-24 (-4,1) ib_trim1 -555.5970 mV (-7,1) ib_trim0 -556.9597 mV Device#: 6-10 (10,1) ib_trim1 -1.1828 uA (7,1) ib_trim0 -1.0120 uA |
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |