如何对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/