Comparar columnas
Publicado: 2017-09-10 20:26 @893
Hola, soy nueva en Perl y quería saber si me pueden ayudar.
Tengo dos archivos y tengo que buscar coincidencias entre ambos en las columnas correspondientes a año, mes, día y hora, y luego si hay coincidencias entre ellos me imprima en un tercer archivo algunas columnas de esas líneas y si no existen similitudes me imprima los datos en un cuarto archivo.
Mi problema es que si las fechas y horas no están ubicadas en la misma posición de linea en ambos archivos el programa considera como que no hay coincidencias.
Mi programa es el que sigue
Tengo dos archivos y tengo que buscar coincidencias entre ambos en las columnas correspondientes a año, mes, día y hora, y luego si hay coincidencias entre ellos me imprima en un tercer archivo algunas columnas de esas líneas y si no existen similitudes me imprima los datos en un cuarto archivo.
Mi problema es que si las fechas y horas no están ubicadas en la misma posición de linea en ambos archivos el programa considera como que no hay coincidencias.
Mi programa es el que sigue
Using perl Syntax Highlighting
- open( f1, "<dato_1.dat" ) || die "can not open file";
- open( f2, "<dato_2.csv" ) || die "can not open file";
- my (@datos) = <f1>;
- my (@datos_2) = <f2>;
- my ($valores);
- my ($valores_2);
- open my $OUT_1, '>', 'datos-interes.dat' or die $!;
- open my $OUT_2, '>', 'sobran.dat' or die $!;
- while (@datos) {
- $valores = shift @datos;
- $valores_2 = shift @datos_2;
- chomp $valores;
- @data = split( ",", $valores );
- chomp $valores_2;
- @data_2 = split( ",", $valores_2 );
- if ( @data[0] == @data_2[0] and @data[1] == @data_2[1] and @data[2] == @data_2[2] and @data[3] == @data_2[3] ) {
- print {$OUT_1}
- "$data[0],$data[1],$data[2],@data[3],@data_2[0],$data_2[1],$data_2[2],$data_2[3],$data[4],$data[5],$data[6],$data[7],$data[8],$data_2[4],$data_2[5],$data_2[6],$data_2[7],$data_2[8]\n";
- }
- else {
- print {$OUT_2}
- "$data[0],$data[1],$data[2],@data[3],@data_2[0],$data_2[1],$data_2[2],$data_2[3],$data[4],$data[5],$data[6],$data[7],$data[8],$data_2[4],$data_2[5],$data_2[6],$data_2[7],$data_2[8]\n";
- }
- }
- close $OUT;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4