Esto es un trabajo ideal para los
hash de Perl.
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use autodie;
my %archivo; # Nueva versión del archivo
open my $archivo, '<', 'beta_arch_unip.out'; # Leemos el archivo
while (my $linea = <$archivo>) { # Miramos todas las líneas
chomp $linea; # Quitamos los finales de línea
my($primer_campo, $resto) = split /,/, $linea, 2; # Partimos la línea en dos cachos
next if not $primer_campo; # Saltamos las líneas vacías
#print "[$primer_campo][$resto]\n";
push @{$archivo{$primer_campo}}, $resto; # Guardamos según el $primer_campo
}
close $archivo;
open my $salida, '>', 'beta_doms.out';
for my $campo (sort keys %archivo) { # Sacamos ordenado por los primeros campos
print $salida join(',', $campo, @{$archivo{$campo}}), "\n"; # El $campo, y sus valores correspondientes
}
close $salida;
__END__
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
El trabajo que hacemos es leer línea por línea; de cada una de ellas, le quitamos los caracteres de fin de línea, ya que no nos sirven para nada; partimos la línea en dos partes según la primera coma; la primera parte será nuestro $primer_campo, que nos servirá de clave
hash para guardar (push) el $resto, en un
array que estará apuntado por el valor asociado a esa clave. En otras palabras, estamos creando una estructura
hash de
arrays.
Ya solo queda hacer la salida, haciendo un recorrido ordenado por las claves que hemos ido recolectando; por cada una de ellas, la imprimimos, junto con una coma, y la unión de todos los "restos" de línea acumulados en el
array asociado.
Bueno, esta es una manera de hacerlo. Hay otras muchas.