免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1615 | 回复: 2
打印 上一主题 下一主题

关于perl处理数据问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-03 22:23 |只看该作者 |倒序浏览
本帖最后由 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;
不知道为什么运行的结果就是不对呢,请各位大侠指点一下,小弟感激不尽啊!!!!!!!

论坛徽章:
1
申猴
日期:2014-04-18 16:29:14
2 [报告]
发表于 2010-10-04 10:52 |只看该作者
1,for( $i=0;$i<5;$i++) ;
2,写上use strict;
3.$step还没定义吧

论坛徽章:
0
3 [报告]
发表于 2010-10-04 11:04 |只看该作者
谢谢楼上兄弟,果然是啊,困扰了好久
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP