尝试对邮箱大小的输出进行排序

尝试对邮箱大小的输出进行排序

尝试对邮箱大小的输出文件进行排序。

[email protected], 1.35 MB
[email protected], 2.19 GB
[email protected], 0 B
[email protected], 0 B
[email protected], 1.66 MB
[email protected], 0 B
[email protected], 47.84 KB
[email protected], 1.28 MB
[email protected], 1.76 MB

我搜索过论坛,但我总是从ls输出中获取文件大小。这是数字字符串。

我尝试过的:

sort -k 2,3 mailbox-size.csv

我的目标是最终找到“平均”大小,但此时只是尝试对列表进行排序。

答案1

删除值和单位之间的空格以获得更传统的人类可读字符串,您可以使用-h, --human-numeric-sort中的标志sort

awk '{print $1 " " $2 $3}' mailbox-size.csv > mailbox-size-2.csv
sort -h -k 2 mailbox-size-2.csv

[email protected], 0B
[email protected], 0B
[email protected], 0B
[email protected], 47.84KB
[email protected], 1.28MB
[email protected], 1.35MB
[email protected], 1.66MB
[email protected], 1.76MB
[email protected], 2.19GB

使用numfmt然后,您可以选择将人类可读的字符串转换回数字,以方便进一步的数学运算。

numfmt --from=iec --suffix B --field=2 < mailbox-size-2.csv | sed s/B$//

[email protected], 1415578
[email protected], 2351494595
[email protected], 0
[email protected], 0
[email protected], 1740637
[email protected], 0
[email protected], 48989
[email protected], 1342178
[email protected], 1845494

sed s/B$//命令用于删除尾随B字节后缀,仅留下整数字节计数,以方便进一步的数学运算。

相关内容