1

2つ以下のエントリを持つ複数のファイルがあります:

$ cat file_01
Total capacity                   3.4 TB
Capacity used                    825.8 GB

ファイルの出力は2行です。最初の行には合計容量があり、2番目の行には使用されている容量があります。

これは1つのサーバーに対して出力されますが、残りのサーバーに対して統合する必要があります。

複数のファイルから使用されるすべての合計容量とすべての容量を追加し、1つの統合された出力を提供する単純なスクリプトを作成したいと思います。シェルまたはperlは私が探しているものです。

これへの方向性は、本当に役に立ちます。

ありがとう

4

4 に答える 4

1

すべてのファイルがTBで報告されると仮定します(未テスト)

perl -lane '
    $total += $F[2]; $used += $F[6]; 
    END {print "total: $total; used: $used"}
' file*

単位が異なる場合は、Math :: Unitsのようなものを使用して、たとえばTBとGBの間で変換することを検討してください。

于 2012-11-05T16:16:15.100 に答える
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"}'
于 2012-11-05T15:24:55.537 に答える
0

GB 、 TB などの各タイプのハッシュテーブルを読み込んでロードします..

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";
};
'
于 2013-06-23T19:41:36.767 に答える