Digamos que tengo un archivo que contiene:
A
A
A
B
CC
Quiero tener la salida de esta manera:
A 3
B 1
CC 1
text-processing
Cheng
fuente
fuente
uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'
sort | uniq
A \ A \ A \ B \ A \ CC
, la salida de solouniq -c
se mostraríaA 3
y luego se mostraríaA 1
. Ordenar primero, garantizará que todas las líneas idénticas se agrupen juntasAcabo de llegar aquí con un problema similar. A partir de esto, logré armar un comando un poco más avanzado, que espero sea útil para otros.
Como dijo Steven D en los comentarios anteriores,
uniq
solo cuenta las líneas de repetición adyacentes, por lo que primero debe ordenar las líneas. Después de eso, encontramos las líneas únicas y luego ordenamos nuevamente para que las líneas más frecuentes estén en la parte superior.La salida se redirige al archivo
output.txt
. Si solo desea ver los resultados en la línea de comando, elimine la redirección y cambie el último comando parasort -n
que la línea más común esté en la parte inferior, es decir, definitivamente todavía en la pantalla.fuente
cat file.txt | sort
con solosort file.txt
. :)cat
con algo más interesante. Ya que, ya sabes, no haycat
.< file.txt sort | uniq -c
. Esto es fácil de editar y aún evita lo innecesariocat
.