我有多个文件,其中包含以下两个条目:
$ cat file_01
Total capacity 3.4 TB
Capacity used 825.8 GB
文件输出是两行。第一行具有总容量,第二行是容量使用。
这是一台服务器的输出,我希望它能合并我的其余服务器。
我想创建一个简单的脚本,它将添加所有总容量和多个文件中使用的所有容量,并提供一个合并输出。我正在寻找Shell或perl。
任何方向,都会非常有用。
由于
答案 0 :(得分:1)
假设1TB = 1000GB:
cat file* | perl -ne '
/.* (\d+.\d+) ([TG])B .* (\d+.\d+) ([TG])B/;
$x+=$1*($2==T?1000:1);
$y+=$3*($4==T?1000:1);
END{print "$x GB, $y GB\n"}'
答案 1 :(得分:1)
假设所有文件都以TB(未经测试)
报告perl -lane '
$total += $F[2]; $used += $F[6];
END {print "total: $total; used: $used"}
' file*
如果您有不同的单位,请考虑使用Math::Units之类的内容进行转换,例如,在TB和GB之间转换。
答案 2 :(得分:0)
下面应该做的诀窍:
awk '{ if ($4 == "GB") $3/=1000; s[FNR] += $3 } END { print "total: "s[1]" TB\nused: "s[2]" TB" }' file_*
FNR - 文件中的行号
答案 3 :(得分:0)
cat file? | perl -ne '
chomp;
@x = split(/\s+/,$_);
$total{$x[-1]} += $x[-2];
while(<>){
chomp;
@x = split(/\s+/,$_);
$total{$x[-1]} += $x[-2];
};
for $m1 ( keys %total ) {
print "$m1 , $total{$m1}\n";
};
'