Bash - 转换列表中的单位

时间:2012-12-06 17:22:02

标签: 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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

对于计算,我喜欢在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可以做的远不止这些,它实际上是处理存储在文本文件中的数据的理想选择。