in reply to match two files
perl z tmp01 tmp02
#!/usr/bin/env perl use strict; use warnings; my $seen; while ( <> ) { next unless /^\d/; s/\s*$//; next unless m/ # [file1] [file2] ^ (\S+) # PeptideID PeptideID \s+ (\S+) # ProteinID SpectrumID (?: \s+ (\S+) # ----- Sequence )? $ /x; if ( $3 ) { $seen->{$1}->{SpectrumID} = $2; $seen->{$1}->{Sequence} = $3; } else { push @{ $seen->{$1}->{ProteinID} }, $2; } } sub frmt { print join("\t", @_) . "\n"; } frmt qw( PeptideID ProteinID SpectrumID Sequence ); foreach my $k ( sort { $a <=> $b } keys %{ $seen } ) { foreach my $p ( @{ $seen->{$k}->{ProteinID} } ) { frmt $k, $p, $seen->{$k}->{SpectrumID}, $seen->{$k}->{Sequence +}; } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: match two files
by yueli711 (Sexton) on Dec 09, 2020 at 16:35 UTC | |
by huck (Prior) on Dec 09, 2020 at 16:47 UTC | |
by yueli711 (Sexton) on Dec 09, 2020 at 17:52 UTC |