排序不适用于 -h 文本文件
sort does not work with -h with text file
在我的 OS 中,我可以找到
-h, --human-numeric-sort
compare human readable numbers (e.g., 2K 1G)
我有一个文件aaa.txt:
2M
5904K
1G
然后我输入
sort -h aaa.txt
输出为
5904K
2M
1G
错了。应该是
2M
5904K
1G
问题:
- 为什么 sort -h 不起作用?即使从字典顺序的角度来看,结果也是错误的。如何以人类可读的数字对 aaa.txt 文件进行排序。
- 或者它只能与
du -h
一起使用?但是 the most vostes answer 似乎可以与 awk
一起使用。
- 对于
du -h
,sort
not 是否需要指定哪个字段,例如 sort -k1h,1
?为什么?如果内存大小不在第一个字段中会发生什么?
Why does sort -h not work?
以下是来自 GNU sort
's source code 的评论。
/* 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
不适用于您的输入。
How to sort the aaa.txt file in human readable numbers.
您可以使用 numfmt
to perform a Schwartzian transform,如下所示。
$ numfmt --from=auto < aaa.txt | paste - aaa.txt | sort -n | cut -f2
2M
5904K
1G
在我的 OS 中,我可以找到
-h, --human-numeric-sort
compare human readable numbers (e.g., 2K 1G)
我有一个文件aaa.txt:
2M
5904K
1G
然后我输入
sort -h aaa.txt
输出为
5904K
2M
1G
错了。应该是
2M
5904K
1G
问题:
- 为什么 sort -h 不起作用?即使从字典顺序的角度来看,结果也是错误的。如何以人类可读的数字对 aaa.txt 文件进行排序。
- 或者它只能与
du -h
一起使用?但是 the most vostes answer 似乎可以与awk
一起使用。 - 对于
du -h
,sort
not 是否需要指定哪个字段,例如sort -k1h,1
?为什么?如果内存大小不在第一个字段中会发生什么?
Why does sort -h not work?
以下是来自 GNU sort
's source code 的评论。
/* 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
不适用于您的输入。
How to sort the aaa.txt file in human readable numbers.
您可以使用 numfmt
to perform a Schwartzian transform,如下所示。
$ numfmt --from=auto < aaa.txt | paste - aaa.txt | sort -n | cut -f2
2M
5904K
1G