+ -
当前位置:首页 → 问答吧 → Perl脚本请教! 多谢

Perl脚本请教! 多谢

时间:2010-08-14

来源:互联网

各位大侠

下面一部分文本,其实有3个pool,分别是"test pool" "ypepivsdb1 pool" 和"ypfpivsdb2 pool"
这三个pool里面的磁带分别是2个,3个和4个。
我想写一个Perl 程序能够得到这3个pool分别有几个磁带? 请各位大侠不吝赐教

多谢了!

test pool

001784  HCART3   ACS      3       -      -       15     91488   ACTIVE
001812  HCART3   ACS      3       -      -       15     94912   ACTIVE

ypepivsdb1 pool

000045  HCART3   TLD      1       46     -       3     844233440        ACTIVE
000745  HCART3   TLD      1       455    -       3     3668000  ACTIVE
000823  HCART3   TLD      1       533    -       3     46102304 ACTIVE

ypfpivsdb2 pool

000914  HCART3   TLD      1       624    -       3     73076448 ACTIVE
001004  HCART3   TLD      1       126    -       3     19219968 ACTIVE
0117L3  HCART3   TLD      2       118    -       3     101234816        ACTIVE
0121L3  HCART3   TLD      2       122    -       3     164481920        ACTIVE

作者: 中国龙老张   发布时间: 2010-08-14

按照内容的格式试着这样写:
  1. #!/usr/bin/perl

  2. while (<DATA>)
  3. {
  4. my $line = $_;
  5. chomp($line);

  6. if ($line eq 'test pool')  { $i = 0; }
  7. if ($line eq 'ypepivsdb1 pool')  { print "test pool:$i\n"; $i=0; }
  8. if ($line eq 'ypfpivsdb2 pool')  { print "ypepivsdb1 pool:$i\n"; $i=0; }

  9. if ($line=~/HCART3/) { $i++; }
  10. }
  11. print "ypepivsdb2 pool:$i \n";



  12. __DATA__

  13. test pool

  14. 001784  HCART3   ACS      3       -      -       15     91488   ACTIVE
  15. 001812  HCART3   ACS      3       -      -       15     94912   ACTIVE

  16. ypepivsdb1 pool

  17. 000045  HCART3   TLD      1       46     -       3     844233440        ACTIVE
  18. 000745  HCART3   TLD      1       455    -       3     3668000  ACTIVE
  19. 000823  HCART3   TLD      1       533    -       3     46102304 ACTIVE

  20. ypfpivsdb2 pool

  21. 000914  HCART3   TLD      1       624    -       3     73076448 ACTIVE
  22. 001004  HCART3   TLD      1       126    -       3     19219968 ACTIVE
  23. 0117L3  HCART3   TLD      2       118    -       3     101234816        ACTIVE
  24. 0121L3  HCART3   TLD      2       122    -       3     164481920        ACTIVE
复制代码
  1. test pool:2
  2. ypepivsdb1 pool:3
  3. ypepivsdb2 pool:4
复制代码

作者: unix666   发布时间: 2010-08-15

本帖最后由 黑色阳光_cu 于 2010-08-15 01:09 编辑
  1. #!/bin/env perl

  2. use strict;
  3. use warnings;

  4. my ($pool, %hash);
  5. while (<DATA>)
  6. {
  7.         if (/^\s*(.+pool)\s*$/)
  8.         {
  9.                 $pool = $1;
  10.         }
  11.         elsif (not /^\s*$/)
  12.         {
  13.                 ++$hash{$pool};
  14.         }
  15.         else
  16.         {
  17.                 ;
  18.         }
  19. }

  20. foreach my $pool (keys(%hash))
  21. {
  22.         print "$pool: $hash{$pool}\n";
  23. }

  24. __DATA__
  25. test pool

  26. 001784  HCART3   ACS      3       -      -       15     91488   ACTIVE
  27. 001812  HCART3   ACS      3       -      -       15     94912   ACTIVE

  28. ypepivsdb1 pool

  29. 000045  HCART3   TLD      1       46     -       3     844233440        ACTIVE
  30. 000745  HCART3   TLD      1       455    -       3     3668000  ACTIVE
  31. 000823  HCART3   TLD      1       533    -       3     46102304 ACTIVE

  32. ypfpivsdb2 pool

  33. 000914  HCART3   TLD      1       624    -       3     73076448 ACTIVE
  34. 001004  HCART3   TLD      1       126    -       3     19219968 ACTIVE
  35. 0117L3  HCART3   TLD      2       118    -       3     101234816        ACTIVE
  36. 0121L3  HCART3   TLD      2       122    -       3     164481920        ACTIVE
复制代码

作者: 黑色阳光_cu   发布时间: 2010-08-15