Bash sort, no sé cómo ordenar la misma línea y elegir la más antigua

Tengo una pregunta, no encuentro y no sé cómo implementar una buena ordenación en mi script. Quiero ordenar parte de la cadena de entrada, para mostrarme redundancia (alguna repetición) y, a partir de esto, devolver la línea de mayor repetición, y si tengo más la misma repetición, por ejemplo.

entrada:

qwe1
qwe1
wer2
wer2
wer4

salida: // lo que quiero

2 qwe1 
input:
asd1
asd1
asd1
asd2
asd2
asd2
asd3
asd3
asd3
output: // What i want
3 asd1  // If I have a the same name return id of alphabeticall first 

#!/bin/bash
sort -n|uniq -c -i | sort -dr | head -n1

Probé algunos otros argumentos de este tipo, pero no encontré una solución.

Lo siento por mi inglés, por favor alguien me puede ayudar con esto?

preguntado el 03 de mayo de 12 a las 17:05

4 Respuestas

Esto podría funcionar para ti:

 sort | uniq -c | sort -nrs | head -1

contestado el 03 de mayo de 12 a las 17:05

sort | uniq -c | sort -k1nr -k2 | head -1

dónde -k1nr significa ordenar en la primera columna numéricamente y al revés (de mayor a menor)
y -k2 significa, donde las primeras claves son iguales, ordenar por columna2 (alfabéticamente)

contestado el 03 de mayo de 12 a las 17:05

sort | uniq -c | sort -nr | awk '{if(a&&a!=$1){print a,b;exit;}a=$1;b=$2}'

contestado el 03 de mayo de 12 a las 17:05

Creo que todo esto se puede hacer en un solo comando awk. Considera esto:

awk '{freq[$0]++;} END {for (var in freq)
{if (freq[var]>max || (freq[var]==max && var < item)) 
{max=freq[var]; item=var} } print max, item; }' file.txt

contestado el 03 de mayo de 12 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.