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 № 1Puedes 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