我一直试图在 bash 制表符分隔文件的每一列中获取唯一值。所以,我使用了以下命令。
cut -f <column_number> <filename> | sort | uniq -c
它工作正常,我可以获得列中的唯一值及其计数
105 Linux
55 MacOS
500 Windows
我想做的不是按列值名称(在本例中是操作系统名称)排序,而是按计数对它们进行排序,并且可能在此输出格式的第二列中包含计数。所以它必须看起来像:
Windows 500
MacOS 105
Linux 55
我该怎么做?
最佳答案
使用:
cut -f <col_num> <filename>
| sort
| uniq -c
| sort -r -k1 -n
| awk '{print $2" "$1}'
sort -r -k1 -n
以相反的顺序排序,使用第一个字段作为数值。 awk
只是颠倒列的顺序。您可以这样测试添加的管道命令(格式更好):
pax> echo '105 Linux
55 MacOS
500 Windows' | sort -r -k1 -n | awk '{printf "%-10s %5d\n",$2,$1}'
Windows 500
Linux 105
MacOS 55
关于linux - 在 bash 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3510275/