sar -uの結果をエクセル貼り付け用に編集するスクリプト

Debian GNU Linux限定ですが、sar -u 1 nで取得したcpu使用率をxlsでグラフ化するときに使ったツールです。

タブ文字をセパレータにした形式でファイルに出力します。そのままxlsにはっつければグラフ化する作業がちょっとだけ楽です。

時間とスキルがなかったので汎用性が・・

#!/usr/bin/perl

use strict;
use warnings;

my $readfile = $ARGV[0];
my $outfile = "$readfile.2xls";
my ($r, $o) = ();   # filehandler

unlink $outfile;
open $r, $readfile;
open $o, ">> $outfile";

my $flag = 0;
while (<$r>) {
  my @a = split;
  if ( !$flag && defined $a[1] && $a[1] eq "CPU" ){
    print $o "\t".(join "\t", @a[2,3,4,5,6])."\n";
    $flag = 1;
  } elsif (  defined $a[0] && $a[0] =~ /(\d{2}.*?){3}/ &&
             defined $a[1] && $a[1] eq "all" ) {
    print $o (join "\t", @a[0,2,3,4,5,6])."\n";
  }
}

close $r;
close $o;

サーバの言語設定が日本語の場合は、elsif条件式を以下のようにしてもよいかと思います。

もし日本語出力なら・・

} elsif ( defined $a[0] && 
          $a[0] =~ s/(\d{2})時(\d{2})分(\d{2})秒/$1:$2:$3/g &&
          defined $a[1] && $a[1] eq "all" ) {