Let's call the file with the interesting categories imei_tags.txt and the file with 3 million devices imeis.txt then something like the following would do the job...
WARNING: Untested off the top of my head code
#! /usr/bin/perl
use strict;
use warnings;
open (my $imeitag , '<', '/path/to/imei_tags.txt');
my %devices;
while(<$imeitag>){
$devices{$1}=0 if /^\s*(\d{8}$/;
}
close $imeitag;
open (my $imei, '<', '/path/to/imeis.txt');
while(<$imei>){
my $imeitag=$1 if /^\s*(\d{8}\d+\s*$/
$devices{$imeitag}++ if defined $devices{$imeitag};
}
close $imei;
my $count=0;
for my $imeitag (sort {$devices{$a}<=>$devices{$b}} keys %devices){
print "$imeitag\n";
$count++;
last if $count >=100;
}
print "Good ",qw(night morning afternoon evening)[(localtime)[2]/6]," fellow monks."