Eu tenho as seguintes 2 limas de texto (com suas colunas separadas pela vírgula) & eu preciso de fundi-los. File2 tem todos os valores das chaves (IE a primeira coluna) de file1 mas de ambas as limas não são classificados. Tão todas as chaves (coluna do IE ø) dentro file1 é um subconjunto das chaves encontradas em file2.
file1: INC00023233, texto da descrição 1, colocam 1 texto, ....., colocam 1 texto INC00023132, texto da descrição 2, colocam o texto 2, ....., colocam o texto 2 INC00023073, texto da descrição 3, colocam o texto 3, ....., colocam o texto 3 INC00023573, texto da descrição 4, colocam o texto 4, ....., colocam o texto 4 ........
file2: INC00011312, fieldA da data de início, fieldA da data de extremidade ...... INC00023233, fieldB da data de início, fieldB da data de extremidade PBI00023232, fieldC da data de início, fieldC da data de extremidade ...... INC00023073, fieldD da data de início, fieldD da data de extremidade ...... INC00023132, fieldE da data de início, fieldE da data de extremidade ..... INC00023573, fieldF da data de início, fieldF da data de extremidade .....
Eu gostaria de fundir as 2 limas acima tais que a lima fundida resultante do csv é como segue: INC00023233, texto da descrição 1, colocam 1 texto, ....., colocam 1 texto, fieldB da data de início, fieldB da data de extremidade INC00023132, texto da descrição 2, colocam o texto 2, ....., colocam 2 texto, fieldE da data de início, fieldE da data de extremidade INC00023073, texto da descrição 3, colocam o texto 3, ....., colocam 3 texto, fieldD da data de início, fieldD da data de extremidade INC00023573, texto da descrição 4, colocam o texto 4, ....., colocam 4 texto, fieldF da data de início, fieldF da data de extremidade ….
UNIX que eu estou dirigindo sou um Redhat 4 mas eu tenho HP-UX B11.11 (o intérprete de Perl está dentro os usuários mas eu de Redhat não somos demasiado certos sobre os usuários do HP-UX), assim o certificado desde que necessidade de poder funcionar naquelas plataformas
|
Não está presumindo nenhuma vírgula na vários descrição dos campos isto é, etc. não inclui vírgulas.
Um método mais simples pôde ser usar o mysql e carregar a primeira lima e emitir então atualizações com dados da segunda lima.
Você pode armazenar a saída em uma lima e carregá-la. Certificar-se neste caso adicionar #! /usr/local/bin/perl na parte superior da lima e do 1; na extremidade da lima de saída assim que de você não começ erros quando você exige a lima onde a mistura está armazenada.
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= " trajeto a filename1 ";
meu $hash= {};
abrir (File1, ")<> {
chomp ();
@array=split (/,/, $_);
o #The abaixo constrói uma mistura provida de pica
$hash-> {$array [0]} {“existe”} =1;
$hash-> {$array [0]} {da “teste descrição 1”} =$array [1];
$hash-> {$array [0]} {do “teste campo 1”} =$array [2];
$hash-> {$array [0]} {do “teste campo 2”} =$array [3];
.
.
.
}
#done com processamento de file1.
fim (File1);
abrir (File2, ")<> {
chomp ();
@array=split (/,/, $_);
se (existe $hash-> {$array [0]} {“existe”} e $hash-> {$array [0]} {“existe”} ==1) {
$hash-> {$array [0]} {“primeiro campo da segunda lima”} =$array [1];
$hash-> {$array [0]} {“segundo campo”} =$array [2];
$hash-> {$array [0]} {“terceiro campo”} =$array [3];
.
.
.
.
}
}
o #done com processamento arquiva quando está combinando chaves.
fim (File2);
o #you tem agora um $hash a que seja uma referência pique.
foreach $key (chaves % {$hash}) {
# cópia “$key: $hash->} {de $key \ n”;
foreach $index (chaves % {$hash-> {$key}}) {
cópia “\ $hash-> {“$key”} {“$index”} =$hash-> {$key}} {de $index \ n”;
}
}
|
|