尝试对邮箱大小的输出文件进行排序。
[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
字节后缀,仅留下整数字节计数,以方便进一步的数学运算。