2017-05-03 5 views
-2

Ich brauche eine Hilfe mit dem folgenden Problem. Ich habe eine Datei mit folgenden Daten.Zweifel Gruppendaten

21997|||70049,,20170428154818,20170527235959||| 
21997|||70070,,20170428154739,20170527235959||| 

21998|||70049,,20170428154818,20170527235959||| 
21998|||70070,,20170428154739,20170527235959||| 
21998|||70071,,20170428154739,20170527235959||| 

Ich muss die Datei wie folgt vereinheitlichen.

21997|||70049,,20170502172844,20170531235959; 70070,,20170502172844,20170531235959||| 

21998|||70049,,20170502172844,20170531235959; 70070,,20170502172844,20170531235959; 70071,,20170502172844||| 

Kann mir bitte jemand helfen?

+3

Hallo und willkommen zu Stack Overflow! Wir bevorzugen es, wenn Sie zeigen, was Sie versucht haben, anstatt den gesamten Code für Sie zu schreiben. Was hast du probiert? [Sie können dies mit SQLite ansehen] (http://stackoverflow.com/a/42563133/14660). – Schwern

+1

Wie groß ist die Datei? Sind die Blöcke immer nach dem Wert in der ersten Spalte gruppiert und durch '\ n \ n' getrennt? –

Antwort

-1
my $unified_output; 
my %out; 

open(FILE, "./raw-file.txt") or die $!; 
    my @file = <FILE>; 
close FILE; 

for (@file) {  
    next if $_ =~ /$^/;   
    my @line = split(/\|\|\|/, $_) if $_;  
    $out{"$line[0]"} .= qq~$line[1]; ~ if $_ and $_ =~ /^$line[0]/;  
} 

for (keys %out) { 
    $out{$_} =~ s!\; $!!; 
    $unified_output .= qq~$_|||$out{$_}|||\n~ if $_ and $out{$_}; 
} 
+0

Mein Freund, ich habe einen Test gemacht und es hat nicht funktioniert. –

+1

Lieber Freund, Sorry, es hat funktioniert. Vielen Dank. –

+0

Das einzige Problem ist, dass es eine Zeile für jeden Datensatz generiert haben sollte, aber zwei Zeilen für einen der Datensätze generiert wurden. Siehe unten: 21998 ||| 70049,, 20170428154818,20170527235959; 70070,, 20170428154739, 20170527235959; 70071,, 20170428154739,20170527235959 ||| 21998 ||| 70049,, 20170428154818,20170527235959; 70070,, 20170428154739, 20170527235959; 70071,, 20170428154739,20170527235959 ||| 21998 ||| 70049,, 20170428154818,20170527235959; 70070,, 20170428154739, 20170527235959; 70071,, 20170428154739,20170527235959 ||| 21997 ||| 70049,, 20170428154818,20170527235959; 70070,, 20170428154739,20170527235959 ||| –