Cuestión : Shell script de Unix O escritura del Perl para combinar dos archivos de texto del csv basados en una columna dominante común


Tengo los 2 archivos de texto siguientes (con sus columnas separadas por coma)
Y necesito combinarlas.  File2 tiene todos los valores de las llaves (IE la primera columna)
de file1 sino de ambos archivos no se clasifican.  Tan todas las llaves (columna del IE 1r) adentro
file1 es un subconjunto de las llaves encontradas en file2.

file1:
INC00023233, texto de la descripción 1, colocan 1 texto, ....., colocan 1 texto
INC00023132, texto de la descripción 2, colocan el texto 2, ....., colocan el texto 2
INC00023073, texto de la descripción 3, colocan el texto 3, ....., colocan el texto 3
INC00023573, texto de la descripción 4, colocan el texto 4, ....., colocan el texto 4
........


file2:
INC00011312, fieldA de la fecha de inicio, fieldA de la fecha de extremo
......
INC00023233, fieldB de la fecha de inicio, fieldB de la fecha de extremo
PBI00023232, fieldC de la fecha de inicio, fieldC de la fecha de extremo
......
INC00023073, fieldD de la fecha de inicio, fieldD de la fecha de extremo
......
INC00023132, fieldE de la fecha de inicio, fieldE de la fecha de extremo
.....
INC00023573, fieldF de la fecha de inicio, fieldF de la fecha de extremo
.....


Quisiera combinar los 2 archivos antedichos tales que es el archivo combinado resultante del csv como sigue:
INC00023233, texto de la descripción 1, colocan 1 texto, ....., colocan 1 texto, fieldB de la fecha de inicio, fieldB de la fecha de extremo
INC00023132, texto de la descripción 2, colocan el texto 2, ....., colocan 2 texto, fieldE de la fecha de inicio, fieldE de la fecha de extremo
INC00023073, texto de la descripción 3, colocan el texto 3, ....., colocan 3 texto, fieldD de la fecha de inicio, fieldD de la fecha de extremo
INC00023573, texto de la descripción 4, colocan el texto 4, ....., colocan 4 texto, fieldF de la fecha de inicio, fieldF de la fecha de extremo
….



UNIX que estoy dirigiendo soy un Redhat 4 pero tengo HP-UX B11.11 (el intérprete de Perl está adentro
los servidores sino yo de Redhat no estamos demasiado seguros sobre los servidores del HP-UX), tan la escritura
con tal que necesidad de poder funcionar en esas plataformas

Respuesta : Shell script de Unix O escritura del Perl para combinar dos archivos de texto del csv basados en una columna dominante común

Están presumiendo comas en la varios descripción de los campos es decir, etc. no incluye comas.

Un método más simple pudo ser utilizar el mysql y cargar el primer archivo y después publicar actualizaciones con datos del segundo archivo.

Usted puede almacenar la salida en un archivo y cargarla.
¡En este caso cerciorarse de agregar #! /usr/local/bin/perl en la tapa de el archivo y el 1; en el extremo del archivo de salida así que de usted no conseguir los errores cuando usted requiere el archivo donde se almacena el picadillo.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
¡#! /usr/local/bin/perl
$file1= " trayectoria a filename1 ";
mi $hash= {};
abrirse (File1, ")<> {
chomp ();
@array=split (/,/, $_);
el #The abajo construye un picadillo referido de desmenuza
$hash-> {$array [0]} {“existe”} =1;
$hash-> {$array [0]} {“prueba de la descripción 1”} =$array [1];
$hash-> {$array [0]} {“prueba del campo 1”} =$array [2];
$hash-> {$array [0]} {“prueba del campo 2”} =$array [3];
.
.
.
}
#done con el proceso de file1.
cierre (File1);
abrirse (File2, ")<> {
chomp ();
@array=split (/,/, $_);
si (existe $hash-> {$array [0]} {“existe”} y $hash-> {$array [0]} {“existe”} ==1) {
$hash-> {$array [0]} {“primer campo a partir del segunda archivo”} =$array [1];
$hash-> {$array [0]} {“segundo campo”} =$array [2];
$hash-> {$array [0]} {“tercer campo”} =$array [3];
.
.
.
.
}

}
el #done con el proceso archiva cuando está emparejando llave.
cierre (File2);

el #you ahora tiene un $hash a el cual sea una referencia desmenuce.
foreach $key (llaves % {$hash}) {
#    impresión “$key: $hash-> {} \ n de $key”;
        foreach $index (llaves % {$hash-> {$key}}) {
           impresión “\ $hash-> {“$key”} {“$index”} =$hash-> {$key} {} \ n de $index”;
        }
}
Otras soluciones  
 
programming4us programming4us