首页 > 解决方案 > 在每一行中将字节转换为 GB

问题描述

如何在 Bash 的单列中的每一行中将字节转换为千兆字节?我试过这个:

echo "scale=2; $(cat file.log) / 1024^2" | bc

但那只转换最后一个值。

file.log 内容示例:

   2171863040
   1693491200
   1984045056

(中间没有空格)

标签: bashawksed

解决方案


你可以使用awk

$ cat file.log
1073741824 1073741824

$ awk '{print $1/1024/1024/1024 " GB " $2/1024/1024/1024 " GB"}' file.log
1 GB 1 GB

或使用您刚刚发布的示例数据:

$ awk '{print $1/1024/1024/1024 " GB "}' file.log
2.02271 GB
1.57719 GB
1.84779 GB

推荐阅读