sorting - 如何按降序/升序对 “uniq -c”进行自然排序输出? -Unix

标签 sorting unix count uniq natural-sort

如何对uniq -c输出进行自然排序?

当计数小于10时,uniq -c | sort输出看起来不错:

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

但是当计数> 10甚至上千/百时,该排序就会困惑,因为它是按字符串而不是按自然整数排序:
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

如何对“uniq -c”进行降序/升序自然排序输出?

最佳答案

-n命令中使用sort,以便按数字排序。另外,-r允许您反转结果:

$ 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

man sort:

-n, --numeric-sort

compare according to string numerical value

-r, --reverse

reverse the result of comparisons

关于sorting - 如何按降序/升序对 “uniq -c”进行自然排序输出? -Unix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21529437/

相关文章:

php - 如何使用php按字母顺序排列

iphone - iOS/iPhone日记/文件系统缓存

linux - 如何使用 shell 脚本重新格式化 csv 文件中的数据

sql - 如何查找sql​​ server表的三个字段中出现次数最多的单词

java - 使用 Java Collat​​or 区分大小写的顺序

Javascript - 对数组排序时处理 "The"

javascript - 在 React 中更改渲染映射数组的排序键

linux - 如何方便地在两个git存储库之间同步文件

python - 按多列 pandas 中的值计数进行透视

sql - 在组内递增计数