Question : Manuscrit d'Unix Shell ou manuscrit de Perl pour fusionner deux dossiers des textes de csv basés sur une colonne principale commune


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

Réponse : Manuscrit d'Unix Shell ou manuscrit de Perl pour fusionner deux dossiers des textes de csv basés sur une colonne principale commune

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 » ;
        }
}
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us