AWK - sorszűrés több szempont alapján

Sziasztok!
Feladatom a következő:
Írj szkriptet, ami egy szöveges állományt vár bemenetként.A szkript keresse meg az email címeket, valamint a telefonszámokat.Az emailcím formája: 'vmi@vmi.vmi', a telefonszám formája: +00/00-000-0000 ahol a 0 tetszőleges számjegyet jelöl. A szkript keresse meg továbbá azokat az email cím telefonszám párokat, amelyek ugyan abban a sorban vannak, és az email címet legfeljebb 20 karakter távolságra követi a telefonszám (ez a 20 karakter nem tartalmazhat további email címet, és feltehetjük, hogy egy email cím egy sorban legfeljebb egyszer szerepel). A szkript előbb írja ki ezeket a párosokat, majd írja ki a leggyakoribb email címeket és telefonszámokat, majd írja ki, hogy hány email cím van átlagosan egy sorban, végül, hogy hány telefonszám van átlagosan egy sorban.

Ehhez tartozó forráskódom nagyvonalakban:


BEGIN{
mail="[A-Za-z0-9._]*@[A-Za-z0-9._]*.[A-Za-z0-9]"
szam="[+][0-9][0-9]\\/[0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"
print "Oszetartozo parosok:"
}
$0 ~ mail {
#ezzel nyerem ki mindkettot
for (i=1;i<=NF;i++) {
       if ( $i ~ szam ){
for (i=1;i<=NF;i++) {
      if ( $i ~ mail ){
                  printf $i" : "     
        }
  if ( $i ~ szam ){
                print $i   
        }
}              
         }
}
for(i=1;i<=NF;i++){
if ($i ~ mail) {
eszam[$i]++
}
}
}
$0 ~ szam {
for(i=1;i<=NF;i++){
if ($i ~ szam) {
tszam[$i]++
}
}
}
END{
for(i in eszam){
j=tszam[i]
if(j > max){
max = j;
maxnev = i     
}
}
        print "Legtobbszor elofordulo email: "maxnev
for(i in tszam){
k=tszam[i]
if(k > max2){
max2 = k;
maxnev2 = i     
}
}
print "Legtobbszor elofordulo telefonszam: "maxnev2
}

OUTPUT


Oszetartozo parosok:
pazo@gmail.com : +12/34-456-7896
pazo.hun@gmail.com : pazsfo@gmasfil.com : +12/34-456-7896
Legtobbszor elofordulo email:
Legtobbszor elofordulo telefonszam: +12/34-456-7896

A célom az lenne, hogy hogy akkor írja ki a párosokat, ha a köztük lévő karakterek száma nem több mint 20, és nem tartalmaz emailcímet.. Továbbá ha egymás után több mélcím van egy sorban, akkor csak az utolsót írja ki(mármint azt, amelyik a szám előtt van ..)
Nem találtam ki reguláris kifejezést rá, ezért kerestem nyakatekert módon.. Ha valaki megszánna, megköszönném!

További szép napot, üdv: Pazo