自动化脚本之Perl文本操作

来源:互联网 发布:手机禁止安装软件设置 编辑:程序博客网 时间:2024/05/16 12:22
     对于前台单板上众多的日志和显示结果,如何从中找出所有自己感兴趣的内容,并组成成自己需要的文件呢?脚本可以快速实现这种“查找-复制-粘贴-修改”的繁重机械任务。

     例如某版本查询显示内容如下,我需要将几十甚至几百个版本进行相应的操作,将原始数据进行处理生成批处理文件。Perl提供了强大的文本操作功能,尤其是正则表达式,可以非常方便的处理下面的文本。


原始输入文本如下,有数百行。

Operation Result: SuccessTotal Records: 12Records Number: 10Record Information:Rack Number: 3Shelf Number: 1Slot Number: 12CPU Number: 1Physical Index: 0Package Name: servapp.pkgPackage Version Number: 0x11012001Appointed Active Time: 2011-12-14 09:17Package External Version Number: 0xffffffffRack Number: 3Shelf Number: 1Slot Number: 14CPU Number: 1Physical Index: 0Package Name: servapp.pkgPackage Version Number: 0x11012001Appointed Active Time: 2011-12-14 09:17Package External Version Number: 0xffffffff


需要转换为下面的操作命令行

INSTALL_DEACTIVE_APTD  servapp.pkg 285286401  1 3-1-12-1INSTALL_DEACTIVE_APTD  servapp.pkg 285286401  1 3-1-14-1...

使用的perl脚本

#! /usr/bin/perl use Math::BigInt;   if(!open FILEIN, "<apt.txt")  {     die "Open file failed: $!"; }   my @text=<FILEIN>; close FILEIN; chomp(@text); my $newpkg = 0; my $phy; my $cmdstr; my $input; my $x; foreach $input (@text) {     #print "$_\n";     my @word=split(":",$input);           if($word[0] eq "Rack Number"){         if($newpkg != 0){             print "Bad pkg.";         }         $newpkg = 1;         $x = $word[1];         $x =~s/ //g;         $phy="$x-";         $cmdstr="INSTALL_DEACTIVE_APTD";     }     elsif($newpkg == 0){         next;     }     elsif($word[0] eq "Shelf Number"){         $x = $word[1];         $x =~s/ //g;         $phy.="$x-";     }     elsif($word[0] eq "Slot Number"){         $x = $word[1];         $x =~s/ //g;         $phy.="$x-";     }     elsif($word[0] eq "CPU Number"){         $x = $word[1];         $x =~s/ //g;         $phy.="$x";         #print "phy is $phy\n";     }     elsif($word[0] eq "Package Name"){         $cmdstr.=" $word[1]";     }     elsif($word[0] eq "Package Version Number"){        $x = $word[1];         $x =~s/ //g;     $x = Math::BigInt->from_hex($x);         $cmdstr.=" $x  1 $phy";         $newpkg = 0;         print "$cmdstr\n";     } }





0 0
原创粉丝点击