我有(多个)文件,如以下列表所示。其中几个文件的值以 TB 为单位,还有几个文件以 GB 为单位。现在,如果您清楚地看到文件输出,则有两行,分别显示总容量和已用容量。我可以使用 awk 分别将这两行相加,但我发现很少有以 GB 为单位的。是否可以编写脚本来检查值是以 GB 还是 TB 为单位,如果以 GB 为单位,则转换为 TB(1024)。
[root@localhost maneesh]# cat server1.txt
Total capacity 2.0 TB
Capacity used 735.23 GB
[root@localhost maneesh]#
基本上,最后我希望我的所有价值观都能在 TB 中呈现。
任何帮助都将不胜感激。
答案1
您可以检查是否$4
是,如果是,则除以 1024。如果 infile 包含GB
:$3
Total capacity 2.0 TB
Capacity used 735.23 GB
你可以做这样的事情(parse.awk):
/Total capacity/ { if($4 == "GB") $3 /= 1024; tot += $3 }
/Capacity used/ { if($4 == "GB") $3 /= 1024; used += $3 }
END { print "Total: " tot " TB, Used: " used " TB" }'
如果你像这样运行它:
awk -f parse.awk infile infile
你得到:
Total: 4 TB, Used: 1.436 TB