Tenemos este archivo:
1 2
1 3
1 2
3 3
52 1
52 300
y 1000 más.
Quiero contar la cantidad de veces que ocurre cada valor en la primera columna.
1 3
3 1
52 2
Esto significa que vimos 1
tres veces.
¿Cómo puedo hacer eso, en Perl, AWK o Bash?
Respuestas:
Si la entrada está ordenada, puede usar uniq:
Si no, ordénelo primero:
Salida:
La salida se intercambia en comparación con sus requisitos, puede usar
awk '{ print $2, $1 }'
para cambiar eso.También está el idioma awk, que no requiere una entrada ordenada:
Salida:
Como la salida aquí proviene de un hash, no se ordenará, pase a
sort -n
si es necesario:Si está utilizando GNU awk, puede ordenar desde awk:
En los últimos dos casos, el resultado es:
fuente
{h[$1]++}
bloque se evalúa para cada línea.h
es un hash y$1
es la primera columna y se usa como clave parah
. Entonces esto cuenta con qué frecuencia$1
se ven los únicos . ElEND
bloque se ejecuta al final de la entrada e imprime las claves y los recuentos.sort -n
ordena la salida numéricamente.