J'ai les 2 dossiers suivants des textes (leurs colonnes étant séparé par virgule) Et je dois les fusionner. File2 a toutes les valeurs des clefs (IE la première colonne) file1 mais des deux dossiers ne sont pas assortis. Tellement toutes les clefs (colonne d'IE ęr) dedans file1 est un sous-ensemble des clefs trouvées dans file2.
file1 : INC00023233, texte de la description 1, mettent en place 1 texte, ....., mettent en place 1 texte INC00023132, texte de la description 2, mettent en place le texte 2, ....., mettent en place le texte 2 INC00023073, texte de la description 3, mettent en place le texte 3, ....., mettent en place le texte 3 INC00023573, texte de la description 4, mettent en place le texte 4, ....., mettent en place le texte 4 ........
file2 : INC00011312, fieldA de date de début, fieldA de date de fin ...... INC00023233, fieldB de date de début, fieldB de date de fin PBI00023232, fieldC de date de début, fieldC de date de fin ...... INC00023073, fieldD de date de début, fieldD de date de fin ...... INC00023132, fieldE de date de début, fieldE de date de fin ..... INC00023573, fieldF de date de début, fieldF de date de fin .....
Je voudrais fusionner les 2 dossiers ci-dessus tels que le dossier fusionné résultant de csv est comme suit : INC00023233, texte de la description 1, mettent en place 1 texte, ....., mettent en place 1 texte, fieldB de date de début, fieldB de date de fin INC00023132, texte de la description 2, mettent en place le texte 2, ....., mettent en place 2 texte, fieldE de date de début, fieldE de date de fin INC00023073, texte de la description 3, mettent en place le texte 3, ....., mettent en place 3 texte, fieldD de date de début, fieldD de date de fin INC00023573, texte de la description 4, mettent en place le texte 4, ....., mettent en place 4 texte, fieldF de date de début, fieldF de date de fin ….
UNIX que je dirige est un Redhat 4 mais j'ai HP-UX B11.11 (l'interprète de Perl est dedans les serveurs mais moi de Redhat ne suis pas trop sûrs au sujet des serveurs de HP-UX), ainsi le manuscrit si le besoin de pouvoir courir sur ces plates-formes
|
Présument là aucune virgule dans la divers description de champs c.-à-d., etc. n'incluent pas des virgules.
Une méthode plus simple pourrait être d'employer le mysql et de charger le premier dossier et puis de publier des mises à jour avec des données à partir du deuxième dossier.
Vous pouvez stocker le rendement dans un dossier et le charger. Veiller dans ce cas-ci à s'ajouter # ! /usr/local/bin/perl au dessus du dossier et du 1 ; à l'extrémité du dossier de rendement ainsi de vous ne pas obtenir les erreurs quand vous avez besoin du dossier où le gâchis est stocké.
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= " chemin à filename1 " ;
mon $hash= {} ;
s'ouvrir (File1, ")<> {
chomp () ;
@array=split (/,/, $_) ;
le #The ci-dessous construit un gâchis référencé de hache
$hash-> {$array [0]} {« existe »} =1 ;
$hash-> {$array [0]} {« essai de description 1 »} =$array [1] ;
$hash-> {$array [0]} {« essai sur le terrain 1 »} =$array [2] ;
$hash-> {$array [0]} {« essai sur le terrain 2 »} =$array [3] ;
.
.
.
}
#done avec traiter file1.
fin (File1) ;
s'ouvrir (File2, ")<> {
chomp () ;
@array=split (/,/, $_) ;
si (existe $hash-> {$array [0]} {« existe »} et $hash-> {$array [0]} {« existe »} ==1) {
$hash-> {$array [0]} {« premier champ à partir de deuxième dossier »} =$array [1] ;
$hash-> {$array [0]} {« deuxième champ »} =$array [2] ;
$hash-> {$array [0]} {« troisième champ »} =$array [3] ;
.
.
.
.
}
}
le #done avec le traitement classe quand là assortissent des clefs.
fin (File2) ;
le #you ont maintenant un $hash au lequel est une référence hache.
foreach $key (clefs % {$hash}) {
# copie « $key : $hash-> {} de $key \ n » ;
foreach $index (clefs % {$hash-> {$key}}) {
copie « \ $hash-> {« $key »} {« $index »} =$hash-> {$key} {} de $index \ n » ;
}
}
|
|