sorting - ¿Cómo hacer una salida de tipo natural de “uniq-c” en orden descendente/ascendente?-Unix
count natural-sort (1)
Utilice -n
en su comando de sort
, para que se ordene numéricamente. También -r
te permite revertir el resultado:
$ sort test.txt | uniq -c | sort -n
1 ada
1 ccd
1 cd
1 nnaa
2 aaa
2 bbb
4 aa
10 naa
$ sort test.txt | uniq -c | sort -nr
10 naa
4 aa
2 bbb
2 aaa
1 nnaa
1 cd
1 ccd
1 ada
Del man sort
:
-n, --numeric-sort
comparar según el valor numérico de la cadena
-r, --verso
revertir el resultado de las comparaciones
¿Cómo hacer una clasificación natural en la salida de uniq -c
?
Cuando los conteos son <10, la uniq -c | sort
uniq -c | sort
salida de uniq -c | sort
se ve bien:
alvas@ubi:~/testdir$ echo -e "aaa/nbbb/naa/ncd/nada/naaa/nbbb/naa/nccd/naa" > test.txt
alvas@ubi:~/testdir$ cat test.txt
aaa
bbb
aa
cd
ada
aaa
bbb
aa
ccd
aa
alvas@ubi:~/testdir$ cat test.txt | sort | uniq -c | sort
1 ada
1 ccd
1 cd
2 aaa
2 bbb
3 aa
pero cuando los conteos son> 10 e incluso en miles / cientos, la clasificación se desordena porque se clasifica por cadena y no por ordenación de enteros naturales:
alvas@ubi:~/testdir$ echo -e "aaa/nbbb/naa/nnaa/nnaa/naa/nnaa/nnaa/nnaa/nnaa/nnaa/nnaa/nnaa/nnaa/nnnaa/ncd/nada/naaa/nbbb/naa/nccd/naa" > test.txt
alvas@ubi:~/testdir$ cat test.txt | sort | uniq -c | sort
10 naa
1 ada
1 ccd
1 cd
1 nnaa
2 aaa
2 bbb
4 aa
¿Cómo hacer una salida de tipo natural de "uniq -c" en orden descendente / ascendente?