忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1935 | 回复: 5

文件中定位查找特殊字段并输出到表格中 [复制链接]

论坛徽章:
0
发表于 2018-01-24 10:30 |显示全部楼层

请各位路过的大神们相助:
      问题:现有一个文件file,要在里面查找“BFGS : Geometry optimization completed successfully.”之后出现的第一个Lattice parameters(A)下第三行的内容,将其输出到std的表格中。

my $a=1;
&parametersetting($a);
open (File($a), "a.castep" || die ("open a.castep fasiled"));
my $line;
while ( $line = <File($a)> )
{
      if($line =~ /"BFGS : Geometry optimization completed successfully."/)
      {
        #这里定位怎么解决?
      }
}
close (File($a));   
下图是文件输出中三者之间的位置关系
   


论坛徽章:
0
发表于 2018-01-25 10:20 |显示全部楼层
为什么没有人解答一下啊,呼唤走过路过的大神们帮助一下吧

论坛徽章:
130
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2018-01-25 15:07 |显示全部楼层
回复 2# 凋谢1991

1. input data
2. procedure
3. output data


论坛徽章:
0
发表于 2018-01-25 17:00 |显示全部楼层
回复 3# jason680

请大神细数一下,主要是卡在了文件定位这里,不知道怎样抓取条件下的特定数据

论坛徽章:
0
发表于 2018-01-27 11:12 |显示全部楼层
现在想的是将文件按行读入数组中,然后以数组长度循环,不知道这样是否可行?求大神指点啊

论坛徽章:
0
发表于 2018-01-29 15:54 |显示全部楼层
走过路过的大神们,请帮忙看下下面这段代码中为何写出Script.txt文件
  1. #!perl

  2. use strict;
  3. use Getopt::Long;
  4. use MaterialsScript qw(:all);

  5. my $a     = 1;
  6. my $myDoc = $Documents{"$a.xsd"};
  7. my $stressz;

  8. sub castepcalculation ($stressz) {
  9.     my ($stressz) = @_;

  10.     my $castep = Modules->CASTEP;
  11.     $castep->ChangeSettings(
  12.         Settings(
  13.             Task                  => "Geometry Optimization",
  14.             NonLocalFunctional    => "PBE",
  15.             UseCustomEnergyCutoff => "Yes",
  16.             EnergyCutoff          => 350,
  17.             SCFConvergence        => 5e-002,
  18.             MaximumSCFCycles      => 200,
  19.             CalculateStress       => "Yes",
  20.             OptimizeCell          => "Yes",
  21.             EnergyConvergence     => 5e-001,
  22.             Sxx                   => 0,
  23.             Syy                   => 0,
  24.             Szz                   => "$stressz",
  25.             Quality               => "Ultra-fine",

  26.             # PropertiesKPointQuality => "Fine"
  27.             KPointDerivation => "CustomGrid",
  28.             ParameterA       => 1,
  29.             ParameterB       => 1,
  30.             ParameterC       => 1
  31.         )
  32.     );
  33.     $castep->GeometryOptimization->Run($myDoc);
  34. }

  35. for ( my $stressz = 0 ; $stressz <= 3 ; ++$stressz ) {
  36.     &castepcalculation($stressz);  #calculate the results files by castep module     

  37.     #Processing result file
  38.     open( result, "$a.castep" || die("open 1.castep fasiled") );
  39.     open( OUTFILE, ">>Script.txt" );
  40.     my @line  = ();
  41.     my $count = 1;
  42.     my $perlscript = "/Documents/script/try2";
  43.     my $outputName;
  44.     @line = <result>;

  45.     while ( $count <= @line )      #$line[count]
  46.     {
  47.         if ($line[$count] =~ /" BFGS : Geometry optimization completed successfully."/ )
  48.         {
  49.             open (OUTFILE, ">>Script.txt") || die ("write Script.out fasiled");
  50.             printf OUTFILE ("stressz=%d Lattice=%2.8f \n",$stressz,$line[$count+17]);
  51.             opendir(filedir,"$perlscript" || die "open dir-try2 fasiled" );
  52.             last;
  53.         }
  54.         else{
  55.              if ( $count < @line ){
  56.                 $count++;
  57.              }
  58.              redo &castepcalculation if($count = @line);
  59.         }
  60.     }
  61. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP