Bash-转换列表中的单位

Bash-转换列表中的单位,bash,Bash,我有一个用户列表,如下所示,我想将单位转换为千兆字节 user1@example.com Mbox size: 7445440 Kb user2@example.com Mbox size: 6622275 Kb user3@example.com Mbox size: 4657973 Kb user"n"@example.com Mbox size: 3657673 Kb 任何帮助都将不胜感激。对于计算,我喜欢使用嵌入bash脚本中的awk 将下面的脚本保存到文件中,例如

我有一个用户列表,如下所示,我想将单位转换为千兆字节

user1@example.com   Mbox size: 7445440 Kb
user2@example.com   Mbox size: 6622275 Kb
user3@example.com   Mbox size: 4657973 Kb
user"n"@example.com     Mbox size: 3657673 Kb

任何帮助都将不胜感激。

对于计算,我喜欢使用嵌入bash脚本中的awk

将下面的脚本保存到文件中,例如togb.sh,并使其可执行。如果需要小数,只需调整printf格式

#!/bin/bash - 
awk '{ printf("%5.3f\n", $4 / (1024*1024)); }' $1
将数据存储在data.txt文件中,并使用命令行调用脚本:

./togb.sh data.txt 
7
6
4
4
要以相同的格式显示列表,但单位已更改,请使用此稍微更改的脚本:

#!/bin/bash - 
awk '{ printf("%s %s %s %5.3f GB\n", $1, $2, $3, $4 / (1024*1024)); }' $1
此脚本的输出将是:

user1@example.com Mbox size: 7.270 GB
user2@example.com Mbox size: 6.467 GB
user3@example.com Mbox size: 4.548 GB
user"n"@example.com Mbox size: 3.571 GB

顺便说一句,awk可以做的远不止这些,它实际上非常适合处理存储在文本文件中的数据。

对于计算,我喜欢使用嵌入bash脚本中的awk

将下面的脚本保存到文件中,例如togb.sh,并使其可执行。如果需要小数,只需调整printf格式

#!/bin/bash - 
awk '{ printf("%5.3f\n", $4 / (1024*1024)); }' $1
将数据存储在data.txt文件中,并使用命令行调用脚本:

./togb.sh data.txt 
7
6
4
4
要以相同的格式显示列表,但单位已更改,请使用此稍微更改的脚本:

#!/bin/bash - 
awk '{ printf("%s %s %s %5.3f GB\n", $1, $2, $3, $4 / (1024*1024)); }' $1
此脚本的输出将是:

user1@example.com Mbox size: 7.270 GB
user2@example.com Mbox size: 6.467 GB
user3@example.com Mbox size: 4.548 GB
user"n"@example.com Mbox size: 3.571 GB

顺便说一句,awk可以做的远不止这些,事实上,它非常适合处理存储在文本文件中的数据。

您想要什么精度?“7GB”?“7.10GB”?“7.45GB”?您想要什么精度?“7GB”?“7.10GB”?“7.45GB”?谢谢,是否可以以相同的格式显示列表,但使用新的单位?我添加了第二个版本的脚本。添加三个格式%s占位符和$1、$2、$3就是所需的全部。当然,要将kb转换为Gb,您必须除以1024两次。谢谢,是否可以以相同格式显示列表,但使用新单位?我添加了第二个版本的脚本。添加三个格式%s占位符和$1、$2、$3就是所需的全部内容。当然,要将kb转换为Gb,您必须除以1024两次。