【问题标题】:Reading a particular column value from a file using Perl使用 Perl 从文件中读取特定列的值
【发布时间】:2018-06-20 10:01:06
【问题描述】:

我对 Perl 很陌生。我有一个名为 test.txt 的文件,下面的代码显示了文件中的数据

test       count    seed    

in          5       100
checks      5       100  
comb        5       100
reload      5       100 
reset       5       100

文件中有 3 列,分别是测试、计数和种子。首先,我想读取测试名称“in”,然后我想将 5 和 10 存储到一个变量中,然后将 5 和 10 存储到不同的变量中,例如 $test=in、$count=5 和 $seed=100,因为我将调用这些变量到另一个文件中,这就是为什么我要存储变量,然后检查、梳理、重新加载和重置。每次它应该调用 test 并且它必须存储到声明的变量中。
我能够读取该文件,但我无法做到这一点。最后,我将打印这些值以查看存储的值是否不是。

我的大脑终于得到了答案,这是代码

while($line=<RD>)
{
    if($line=~m/^\#\w+/)                        
    {
    }
    elsif($line=~m/^\s*\w+/)                    
    {
        $line1=$&;                      
        $line1=~s/\s+//g;                   
        #print "$line1\n";
        push(@arr,split(" ",$line));
        $test_count=$arr[1];
        for($i=1;$i<=$test_count;$i=$i+1)
        {
            print "make $arr[0] $arr[2] $arr[3] $arr[4]\n";
        }
    $#arr=-1;
    }
}

【问题讨论】:

标签: linux perl


【解决方案1】:

你说:

我想在 5 和 10 之后存储到一个变量中 不同的变量,如 $test=in、$count=5 和 $seed=100

我敢打赌这不是你想要的。我敢打赌,将数据存储在复杂的数据结构中对您来说会更有用。像这样的:

my @data;
my @cols;

# Assuming you've opened the file and stored
# the filehandle in $fh
while (<$fh>) {
  # Skip lines without any data
  next unless /\S/;

  if ($. == 1) {
    @cols = split;
    next;
  }

  my %row;
  @row{@cols} = split;
  push @data, \%row;
}

由于您没有努力尝试解决问题(或者,至少,您没有表现出任何努力的证据),所以我不会花时间向您解释我的解决方案。阅读perldoc perldsc,你会得到一些有用的信息。

【讨论】:

  • 我明白了。这是我的逻辑 while($line=) { if($line=~m/^\#\w+/) { } elsif($line=~m/^\s*\w+/) { $line1 =$&; $line1=~s/\s+//g; push(@arr,split(" ",$line)); $test_count=$arr[1]; for($i=1;$i
  • @abhishek:请不要在不可读的注释中转储代码。如果您有新信息要添加,请将其编辑到您的问题中
  • 对不起。我没见过。我会从下一次开始
猜你喜欢
  • 2014-07-25
  • 2012-01-22
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多