- 论坛徽章:
- 0
|
本帖最后由 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;
不知道为什么运行的结果就是不对呢,请各位大侠指点一下,小弟感激不尽啊!!!!!!! |
|