let*_*nje 73 sorting bash command-line count duplicates
我有一个命令(cmd1),它通过一个日志文件来过滤掉一组数字.这些数字是随机顺序,因此我使用sort -gr来获得反向排序的数字列表.此排序列表中可能存在重复项.我需要找到该列表中每个唯一号码的计数.
例如,如果cmd1的输出是:
100
100
100
99
99
26
25
24
24
Run Code Online (Sandbox Code Playgroud)
我需要另一个命令,我可以管道上面的输出,所以,我得到:
100 3
99 2
26 1
25 1
24 2
Run Code Online (Sandbox Code Playgroud)
小智 87
怎么样;
$ echo "100 100 100 99 99 26 25 24 24" \
| tr " " "\n" \
| sort \
| uniq -c \
| sort -k2nr \
| awk '{printf("%s\t%s\n",$2,$1)}END{print}'
Run Code Online (Sandbox Code Playgroud)
结果是:
100 3
99 2
26 1
25 1
24 2
Run Code Online (Sandbox Code Playgroud)
Ibr*_*him 46
uniq -c 至少适用于GNU uniq 8.23,并且完全符合您的要求(假设已排序的输入).
gho*_*g74 10
如果订单不重要
# echo "100 100 100 99 99 26 25 24 24" | awk '{for(i=1;i<=NF;i++)a[$i]++}END{for(o in a) printf "%s %s ",o,a[o]}'
26 1 100 3 99 2 24 2 25 1
Run Code Online (Sandbox Code Playgroud)
用数字对数字进行反向排序,然后计算重复项,然后交换左右单词。对齐列。
printf '%d\n' 100 99 26 25 100 24 100 24 99 \
| sort -nr | uniq -c | awk '{printf "%-8s%s\n", $2, $1}'
Run Code Online (Sandbox Code Playgroud)
printf '%d\n' 100 99 26 25 100 24 100 24 99 \
| sort -nr | uniq -c | awk '{printf "%-8s%s\n", $2, $1}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60903 次 |
| 最近记录: |