WWq has asked for the wisdom of the Perl Monks concerning the following question:
I have two files here (file 1 & file 2). I would like to match names from both files (e.g John06/ext, lily099/poli). However I need to print those unmatched data in file 1 format. I have been trying the code below but it is not the result I want. How to print those unmatched data in file 1 format after matching?
file 1
ID alan135/xkr $work(b05bfn00un0c3)/b05bfn00un0c3 ; #<= b05bfn00un0d0 Size:5848.270996
ID John06/ext $work(b05bfn00ld0p7)/b05bfn00ld0p7 ; #<= b05bfn00ld0s0 Size:INFINITY
ID lily099/poli $work(b05bfn00ld0p7)/b05bfn00ld0p7 ; #<= b05bfn00ld0s0 Size:INFINITY
ID sam012/pp $work(b05bfn00ld0p7)/b05bfn00ld0p7 ; #<= b05bfn00ld0s0 Size:INFINITY
ID lily099/poli $wwrk(b05bfn00ld0p8)/b05bfn00ld0p8 ; #<= b05bfn00ld0s0 Size:INFINITY
ID Steve9018 $work(b05bfn00ld0p7)/b05bfn00ld0p7 ; #<= b05bfn00ld0s0 Size:INFINITY
..
..
.
file 2
Accept => John06/ext Max
Accept => vivian788/ppr Maxcap
Accept => suzan645/pp Min
Accept => lily099/poli Max
Accept => Nick5670/uu Max
Accept => Anne309/pej Min
..
..
.
code my ($line1,$line2,@arr1,@arr2,@arr3,@emptyarr); @arr1 = <FILE1>; @arr2 = <FILE2>; foreach $line2 (@arr2) { if ($line2 =~ m/(.*)\s+(.*)\s+(.*)\s+(.*)/) { @arr3 = @emptyarr; my $cname2 = "$2"; push (@arr3, $cname2); } } foreach $line2 (@arr3) { foreach $line1 (@arr1) { if ($line1 =~ m/(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)/ +) { my $cname1 = "$2"; if ($cname1 ne $line3) { print NL "$cname1\n"; } } } }
expected result:
ID John06/ext $work(b05bfn00ld0p7)/b05bfn00ld0p7 ; #<= b05bfn00ld0s0 Size:INFINITY
ID lily099/poli $work(b05bfn00ld0p7)/b05bfn00ld0p7 ; #<= b05bfn00ld0s0 Size:INFINITY
ID lily099/poli $wwrk(b05bfn00ld0p8)/b05bfn00ld0p8 ; #<= b05bfn00ld0s0 Size:INFINITY
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Perl: How to print unmatched data after comparison of two files?
by CountZero (Bishop) on Jul 17, 2013 at 06:02 UTC | |
|
Re: Perl: How to print unmatched data after comparison of two files?
by davido (Cardinal) on Jul 17, 2013 at 05:53 UTC | |
|
Re: Perl: How to print unmatched data after comparison of two files?
by mtmcc (Hermit) on Jul 17, 2013 at 07:21 UTC |