在我的操作系统中,我可以找到
-h, --human-numeric-sort
比较人类可读数字(例如,2K 1G(
我有一个文件aaa.txt:
2M
5904K
1G
然后我输入
sort -h aaa.txt
输出为
5904K
2M
1G
错了。它应该是
2M
5904K
1G
问题:
- 为什么排序 -h 不起作用?即使在字典顺序的角度来看,结果也是错误的。如何以人类可读的数字对 aaa.txt 文件进行排序。
- 或者它只能与
du -h
一起使用?但最沃斯特的答案似乎可以与awk
一起使用. - 使用
du -h
,sort
不需要指定哪个字段,例如sort -k1h,1
?为什么?如果内存大小不在第一个字段中,会发生什么情况?
为什么排序 -h 不起作用?
以下是GNUsort
源代码的评论。
/* Compare numbers ending in units with SI xor IEC prefixes
<none/unknown> < K/k < M < G < T < P < E < Z < Y
Assume that numbers are properly abbreviated.
i.e. input will never have both 6000K and 5M. */
手册页中未提及它,但-h
不应该与您的输入一起使用。
如何以人类可读的数字对 aaa.txt 文件进行排序。
您可以使用numfmt
执行施瓦茨变换,如下所示。
$ numfmt --from=auto < aaa.txt | paste - aaa.txt | sort -n | cut -f2
2M
5904K
1G