【发布时间】:2017-07-27 15:50:52
【问题描述】:
以下命令将 disk_space_in_bytes 变量格式化为人类可读的输出,逗号后有 2 位数字。
echo $disk_space_in_bytes | awk '{ suffix=" KMGT"; for(i=1; $1>1024 && i < length(suffix); i++) $1/=1024; printf("%.2f\n", $1); print(substr(suffix, i, 1)"B")}'
(此 awk 命令归功于 @Innocent Bystander https://stackoverflow.com/a/36724130/6133648)
例如,如果disk_space_in_bytes 是858 458 685,44(以字节为单位的值),则该命令将打印818.69 MB,但中间有一个空格。
我想删除这个多余的空格,例如818,69MB。但这在 awk 中对我来说有点棘手。我尝试了一些 ORS 和 OFS 操作,但没有成功。
你能找到去除多余空间的方法吗?
谢谢
【问题讨论】:
-
另请参阅:stackoverflow.com/questions/15854332/…... 例如:
numfmt --to=iec-i --suffix=B --format="%.2f" 858458685.44 -
你尝试了什么? StackOverflow 旨在帮助人们修复他们的编程代码。最好展示您失败的尝试,以便我们帮助您提高对
awket.al 的理解。 . 请阅读stackoverflow.com/help/how-to-ask、stackoverflow.com/help/dont-ask、stackoverflow.com/help/mcve,并在此处发布更多问题之前使用tour。祝你好运。 -
@BenjaminW。后缀中的空格是针对
disk_in_space_in_bytes小于1024的情况(见stackoverflow.com/a/36724130/6133648cmets)。 -
@shellter 正如我在原帖中所说,我尝试设置
ORS=""(输出记录分隔符)和OFS=""(输出字段分隔符),希望抑制printf后的空格。它没有用,我觉得这可能不是实现这一目标的方法。我会看看这些链接,并记住你对我下一个问题的建议。谢谢。