It's been ages since I last posted here, but here goes.
Your first statement is false. This egrep doesn't make sure that all characters occur, so it makes sense that it seems to be harder in perl. Egrep tries to match either of the characters you specified, and spits out only the parts that match, because of the -o:
egrep finds all the cases because it has greedy alternation(the subject of this Seekers...).
-o simply has egrep print out the matches it does find.
A complete non-perl solution could be something like