2014-10-02 65 views
1

解析文本文件我有格式的文本文件FILE1.TXT如下圖所示需要幫助在Perl

1 
A: 24 
B: 6 
C: -33 

2 
A: 44 
B: 5 
C: 78 

3 
A: 32 
B: -98 
C: 22 

我需要我的Perl程序來解析這個文本文件和輸出FILE2.TXT:

 1  2  3 
A 24  6  -33  
B 44  5  78 
C 32 -98  22 

感謝您的幫助提前

已經嘗試的東西但不能正常工作。但基於其他人的反饋,我發佈了代碼。

# Program to parse output 
@split1 = split(/\//,$ENV{'DESIGN_PATH'}); 

open (FILE1,"<path_to_file1.txt"); 
open (FILE2,">path_to_file2.txt"); 
my $go = 0; 

while ($line = <FILE1>) { 
print $line; 
# Remove Blank SPaces 
chomp $line; 
@sp = split(/ /,$line); 

$n=0; 
for ($i=0; $i<=$#sp; $i++) { 
    if ($sp[$i] eq "") { 
    } else { 
    $arry[$n] = $sp[$i]; 
    $n++; 
    } 
} 

if ($line =~ /A:/ && $go == 0) { 
    $go = 1; 
    $group = $arry[$n-1]; 
    print FILE2 "- -\n"; 
    print FILE2 "B $arry[$n-1]\n"; 
} 

if ($line =~ /B:/ && $go == 1) { 
    $go = 0; 
    print FILE2 "B: $arry[$n-1]\n"; 
} elsif ($line =~ /C:/ && $go == 1) { 
    print FILE2 "C: $arry[$n-1]\n"; 
} 


} 
close FILE1; 
+1

什麼你試過嗎? – 2014-10-02 00:33:06

+0

除非您展示它,否則我們無法幫助您修復代碼。請添加不適用於您的問題的Perl代碼。 – Borodin 2014-10-02 00:51:53

+0

@AvinashRaj我發佈了代碼片段,我嘗試過並且沒有工作 – user2643899 2014-10-02 02:56:44

回答

2

積累數據爲環比或其他一些數據結構,然後將它輸出:

use strict; 
use warnings; 

use List::MoreUtils qw(uniq); 

my %data; 

local $/ = ''; # Paragraph mode 
while (<DATA>) { 
    chomp; 
    my ($column, $vals) = split "\n", $_, 2; 

    while ($vals =~ m/(.*):\s*(.*)/g) { 
     $data{$column}{$1} = $2; 
    } 
} 

my @columns = sort keys %data; 
my @rows = sort +uniq map { keys %$_ } values %data; 

print join("\t", '', @columns), "\n"; 
for my $row (@rows) { 
    print join("\t", $row, map { $data{$_}{$row} // '' } @columns), "\n"; 
} 

__DATA__ 
1 
A: 24 
B: 6 
C: -33 

2 
A: 44 
B: 5 
C: 78 

3 
A: 32 
B: -98 
C: 22 

輸出:

1 2 3 
A 24 44 32 
B 6 5 -98 
C -33 78 22 
+0

它給這行錯誤'使用List :: MoreUtils qw(uniq);' – user2643899 2014-10-02 17:07:27

+0

HoH是什麼意思? – user2643899 2014-10-03 22:31:48

+0

['List :: MoreUtils'](https://metacpan.org/pod/List::MoreUtils)是一個可以安裝的基本CPAN模塊。 [如何安裝CPAN模塊](http://www.cpan.org/modules/INSTALL.html) – Miller 2014-10-03 22:50:14