mao9856 has asked for the wisdom of the Perl Monks concerning the following question:
Hello! I want to match two large data files to match and print only identical id data.
file1:ABS0056
ABS0057
ABS0058
ABS0059
...........file2:
id “ABS0056”; name “SAM”;
id “ABS0059”; name “JOE”;
id “ABS0060”; name “MARY”;
id “ABS0057”; name “BILL”;
id “ABS0057”; name “BILL”;
id “ABS0056”; name “SAM”;
id “ABS0065”; name “RONIE”;
id “ABS0061”; name “STEPHAN”
id “ABS0057”; name “BILL”;
id “ABS0056”; name “SAM”;
........I used awk to remove semicolon and inverted commas. These two columns are separated by tab. So my file looks like this:
file3ABS0056 SAM
ABS0059 JOE
ABS0060 MARY
ABS0057 BILL
ABS0057 BILL
ABS0056 SAM
ABS0065 RONIE
ABS0061 STEPHAN
ABS0057 BILL
ABS0056 SAM
..............I want my output in following data format:
ABS0056 SAM
ABS0057 BILL
ABS0059 JOE
I have tried using code as below:
#!/usr/bin/env perl use strict; use warnings; open FILE1, "< file1" or die; my $keyRef; while (<FILE1>) { chomp; $keyRef->{$_} = 1; } close FILE1; open FILE3, "< file3" or die; while (<FILE2>) { chomp; my ($testKey, $name) = split("\t", $_); if (defined $keyRef->{$testKey}) { print STDOUT "$_\n"; } } close FILE3;
Thanking in advance
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: print data with matching id from two different files
by hippo (Archbishop) on Oct 31, 2017 at 11:16 UTC | |
by mao9856 (Sexton) on Nov 02, 2017 at 05:53 UTC | |
by hippo (Archbishop) on Nov 02, 2017 at 09:49 UTC | |
|
Re: print data with matching id from two different files
by thanos1983 (Parson) on Oct 31, 2017 at 10:53 UTC | |
|
Re: print data with matching id from two different files
by wjw (Priest) on Oct 31, 2017 at 13:42 UTC | |
|
Re: print data with matching id from two different files
by mao9856 (Sexton) on Nov 02, 2017 at 11:05 UTC | |
by hippo (Archbishop) on Nov 02, 2017 at 12:05 UTC | |
by mao9856 (Sexton) on Nov 02, 2017 at 12:17 UTC |