I have two files here (file 1 & file 2). I would like to match name in bold as shown below from both files. 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
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