+ -
当前位置:首页 → 问答吧 → 关于perl处理数据问题

关于perl处理数据问题

时间:2010-10-03

来源:互联网

本帖最后由 quantumren 于 2010-10-03 22:25 编辑

各位大侠,小弟刚学perl,想处理一个数据文件
格式如下
CONFIG
         0         3     19043
timestep        50     19043         0         3    0.010000
   94.50       0.000       0.000
   0.000       84.30       0.000
   0.000       0.000       75.93
A                1    0.000000    0.000000
  0.0000E+00  1.6860E+00  2.9202E+00
A                2    0.000000    0.000000
  0.0000E+00  3.3720E+00  0.0000E+00
A                3    0.000000    0.000000
  0.0000E+00  5.0580E+00  2.9202E+00
A                4    0.000000    0.000000
  0.0000E+00  6.7440E+00  0.0000E+00
A                5    0.000000    0.000000
  0.0000E+00  8.4300E+00  2.9202E+00
A                6    0.000000    0.000000
  0.0000E+00  1.0116E+01  0.0000E+00
A                7    0.000000    0.000000
  0.0000E+00  1.1802E+01  2.9202E+00
A                8    0.000000    0.000000
  0.0000E+00  1.3488E+01  0.0000E+00
A                9    0.000000    0.000000
  0.0000E+00  1.5174E+01  2.9202E+00
A               10    0.000000    0.000000
  0.0000E+00  1.6860E+01  0.0000E+00
A               11    0.000000    0.000000
  0.0000E+00  1.8546E+01  2.9202E+00
A               12    0.000000    0.000000
  0.0000E+00  2.0232E+01  0.0000E+00
A               13    0.000000    0.000000
  0.0000E+00  2.1918E+01  2.9202E+00
A               14    0.000000    0.000000
  0.0000E+00  2.3604E+01  0.0000E+00
A               15    0.000000    0.000000
  0.0000E+00  2.5290E+01  2.9202E+00
........................

前两行数据只读不处理,想要输出第三行第二个数据,然后后面38027行数据不处理,再后面要输出每隔一行的第一个数据,做5次循环。然后后面的数据只读不处理
我写的脚本如下
#!/usr/bin/perl
open(R,"HISTORY")|| die ("Could not open file");
open(OUTPUT,">result");
$line=<R>;
$line=<R>;
$line=<R>;
$line=~s/^\s+//;
chomp($line);
($a1,$a2,$a3,$a4,$a5,$a6)=split(/\s+/,$line);
$t[$step]=$a2;
print OUTPUT ($t[$step]);
for(my $n=0;$n<38027;$n++) {
$line=<R>; }
for(my $i=0;i<5;$i++) {
$line=<R>;
$line=<R>;
$line=~s/^\s+//;
chomp($line);
($a,$b,$c)=split(/\s+/,$line);
$x[$step][$i]=$a;
print OUTPUT ($x[$step][$i]);}
for(my $j=0;$j<52;$j++){
$line=<R>;}
close OUTPUT;
close R;
不知道为什么运行的结果就是不对呢,请各位大侠指点一下,小弟感激不尽啊!!!!!!!

作者: quantumren   发布时间: 2010-10-03

1,for( $i=0;$i<5;$i++) ;
2,写上use strict;
3.$step还没定义吧

作者: Mr-Summer   发布时间: 2010-10-04