排序不适用于文本文件的 -h



在我的操作系统中,我可以找到

-h, --

human-numeric-sort
比较人类可读数字(例如,2K 1G(

我有一个文件aaa.txt:

2M
5904K
1G

然后我输入

sort -h aaa.txt

输出为

5904K
2M
1G

错了。它应该是

2M
5904K
1G

问题:

  1. 为什么排序 -h 不起作用?即使在字典顺序的角度来看,结果也是错误的。如何以人类可读的数字对 aaa.txt 文件进行排序。
  2. 或者它只能与du -h一起使用?但最沃斯特的答案似乎可以与awk一起使用.
  3. 使用du -hsort不需要指定哪个字段,例如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

相关内容

  • 没有找到相关文章

最新更新