/ / ¿Cómo encontrar los dos dominios más frecuentes de una lista de direcciones de correo electrónico? [cerrado] - bash, shell

¿Cómo encontrar los dos dominios más frecuentes de una lista de direcciones de correo electrónico? [cerrado] - bash, shell

Soy nuevo en la programación, y lo que quiero hacer es lo siguiente:

Por ejemplo, tengo:

a@hotmail.com
b@hotmail.com
c@hotmail.com
g@gmail.com
s@gmail.com
h@msn.com
h@yahoo.com

Necesito encontrar los dos dominios de correo electrónico más utilizados. En el ejemplo, eso es hotmail.com y gmail.com.

¿Cómo hago eso con un script de shell?

Respuestas

2 para la respuesta № 1

Puedes usar uniq -c contar el número de cada elemento en una lista ordenada de elementos. Armado con esto, cortamos y clasificamos apropiadamente:

$ cut -d @ -f 2 yourlist | sort | uniq -c | sort -rn

3 hotmail.com
2 gmail.com
1 yahoo.com
1 msn.com

$

1 para la respuesta № 2

Esto podría ayudarte a comenzar. Cuenta las ocurrencias de cada dominio y luego los ordena descendentes por conteo.

awk -F"@" "domains[$2]++{} END{ for (d in domains) print d, domains[d]; }" | sort -rnk2