2011-02-02 9 views
-2

こんにちは、私は、以下の情報を持つxyz.txtファイルを持っている全ての第1 coloumnが、私は二coloumnを保存したい秒は、どのように私はperlで最初の10秒間のファイルの内容を保存しない

ある

69013 1-3039-1 REGISTER 

69013 1-3039-1 100 


69013 1-3039-1 401 

69013 1-3039-2 REGISTER 

69013 1-3039-2 100 

69013 2-3039-1 REGISTER 

69013 3-3039-1 REGISTER 

69013 4-3039-1 REGISTER 

..................... 
..................... 

69023 213-3039-2 REGISTER 

69023 193-3039-2 100 

69023 193-3039-2 401 

69023 222-3039-1 REGISTER 

69023 177-3039-2 100 

69024 177-3039-2 401 

69024 214-3039-1 100 

69024 214-3039-1 401 

69024 214-3039-2 REGISTER 

それぞれ異なる第3色目

答えて

0

あなたの質問があなたの望むと思うように尋ねるのは私には聞こえません。したがって、これは列3の列2のすべての値を取得するソリューションです。これがあなたの意図でない場合はお詫び申し上げます。この時点で

open(my $fh, '<', '/path/to/xyz.txt') or die "Did not open $!"; 
my %hash; 

while (<$fh>) { 
    next unless /\S/; 
    my (undef, $col2, $col3) = split ' ', $_, 3; 
    next unless $col3; 
    $hash{ $col3 }{ $col2 }++; 
} 

close $fh; 

%hashをキーとして第二にハイフン番号を含むハッシュ値を含むであろう。

これは値を出力します。

foreach my $key (sort keys %hash) { 
    my $h = $hash{ $key }; 
    foreach my $k (sort keys %$h) { 
     print "$key, $k\n"; 
    } 
} 
+0

感謝すべての男 – singhabsk

1

あなたの要件は、私にとって非常に明確ではないが、ここではそれぞれ異なる3列のための第二の列を格納するスクリプトです:

#!/usr/bin/perl 
use 5.10.1; 
use strict; 
use warnings; 
use Data::Dumper; 

my %result; 
while (<DATA>) { 
    chomp; 
    next if /^\s*$/; 
    my @cols = split; 
    push @{$result{$cols[2]}}, $cols[1]; 
} 
say Dumper \%result; 


__DATA__ 
69013 1-3039-1 REGISTER 

69013 1-3039-1 100 


69013 1-3039-1 401 

69013 1-3039-2 REGISTER 

69013 1-3039-2 100 

69013 2-3039-1 REGISTER 

69013 3-3039-1 REGISTER 

69013 4-3039-1 REGISTER 

69023 213-3039-2 REGISTER 

69023 193-3039-2 100 

69023 193-3039-2 401 

69023 222-3039-1 REGISTER 

69023 177-3039-2 100 

69024 177-3039-2 401 

69024 214-3039-1 100 

69024 214-3039-1 401 

69024 214-3039-2 REGISTER 

は出力:

$VAR1 = { 
      '401' => [ 
        '1-3039-1', 
        '193-3039-2', 
        '177-3039-2', 
        '214-3039-1' 
        ], 
      'REGISTER' => [ 
          '1-3039-1', 
          '1-3039-2', 
          '2-3039-1', 
          '3-3039-1', 
          '4-3039-1', 
          '213-3039-2', 
          '222-3039-1', 
          '214-3039-2' 
         ], 
      '100' => [ 
        '1-3039-1', 
        '1-3039-2', 
        '193-3039-2', 
        '177-3039-2', 
        '214-3039-1' 
        ] 
     };