1

如何修改以下脚本,使其在相应的列中显示每个值: 脚本的主体如下所示:

( $vmdisk, $totalio, $readpercentage, $cachehitpercentage, $currentkbpersecond,
  $maximumkbpersecond, $currentiopersecond, $maximumiopersecond
) = split (",", $line);
$totalio =~ s/\"//g;
$readpercentage =~ s/\"//g;
$cachehitpercentage =~ s/\"//g;
$currentkbpersecond =~ s/\"//g;
$maximumkbpersecond =~ s/\"//g;
$currentiopersecond =~ s/\"//g;
$maximumiopersecond =~ s/\"//g;

print "totalio:$totalio readpercentage:$readpercentage cachehitpercentage:$cachehitpercentage currentkbpersecond:$currentkbpersecond maximumkbpersecond:$maximumkbpersecond currentiopersecond:$currentiopersecond maximumiopersecond:$maximumiopersecond";

这将显示这种类型的格式化输出:

totalio:75.0 readpercentage:20.0 cachehitpercentage:93.3 currentkbpersecond:33.8 maximumkbpersecond:33.8 currentiopersecond:15.0 maximumiopersecond:15.0

一切都在一条线上。我的目标是将输出放入列中并使其更具可读性。例如像这样:

totalio readpercentage cachehitpercentage

75.00 20.0 93.0

我怎样才能做到这一点?

4

4 回答 4

4

    printf "%-10s %-10s %-10s\n", $totalio, $readpercentage, $cachehitpercentage; 

应该做你正在寻找的东西。只需根据需要根据模式附加变量。参考: printf

于 2012-11-10T16:48:58.933 回答
1

对不起,我只是走出门,否则我会举一个更好的例子。您正在寻找的东西是formats. 阅读更多perldoc perlform

于 2012-11-10T17:04:28.627 回答
1

如果您多次进行这些测量并打印到标准输出或日志文件,则需要考虑格式。 perldoc 执行

$line = "0.0,75.0,20.0,93.3,33.8,33.8,15.0,15.0";

( $vmdisk, $totalio, $readpercentage, $cachehitpercentage, $currentkbpersecond, $maximumkbpersecond, $currentiopersecond, $maximumiopersecond) = split (",", $line);

$totalio =~ s/\"//g;
$readpercentage =~ s/\"//g;
$cachehitpercentage =~ s/\"//g;
$currentkbpersecond =~ s/\"//g;
$maximumkbpersecond =~ s/\"//g;
$currentiopersecond =~ s/\"//g;
$maximumiopersecond =~ s/\"//g;

format REPORT_HEADER = 
-------------------------------------------------------------------------------------------------------
Total IO     Read %     Cache Hit %     Current kB/sec     Max kB/sec     Current IO/sec     Max IO/sec
-------------------------------------------------------------------------------------------------------
.

format REPORT_BODY = 
 @####.#    @###.##         @###.##            @###.##        @###.##            @###.##        @###.##
$totalio, $readpercentage, $cachehitpercentage, $currentkbpersecond, $maximumkbpersecond, $currentiopersecond, $maximumiopersecond
.

select(STDOUT);

$~= "REPORT_HEADER";
write;

$~= "REPORT_BODY";
write;

会给你这样的输出:

-------------------------------------------------------------------------------------------------------
Total IO     Read %     Cache Hit %     Current kB/sec     Mac kB/sec     Current IO/sec     Max IO/sec
-------------------------------------------------------------------------------------------------------
    75.0      20.00           93.30              33.80          33.80              15.00          15.00
于 2012-11-11T05:29:39.527 回答
0

其中,还有方便的花花公子Text::Table

于 2012-11-11T00:53:01.493 回答