Vraag : Het manuscript van Unix Shell of manuscript Perl om twee die dossiers samen te voegen van de csvtekst op een gemeenschappelijke zeer belangrijke kolom worden gebaseerd


Ik heb de volgende 2 tekstdossiers (met hun die kolommen door komma worden gescheiden)
& moet ik hen samenvoegen.  File2 heeft alle sleutels (d.w.z. de eerste kolom) waarden
van file1 maar beide dossiers niet worden gesorteerd.  Zo alle sleutels (d.w.z. 1st kolom) binnen
file1 is een ondergroep van de sleutels in file2 worden gevonden die.

file1:
INC00023233, beschrijving 1 tekst, gebied 1 tekst, ....., gebied 1 tekst
INC00023132, beschrijving 2 tekst, gebied 2 tekst, ....., gebied 2 tekst
INC00023073, beschrijving 3 tekst, gebied 3 tekst, ....., gebied 3 tekst
INC00023573, beschrijving 4 tekst, gebied 4 tekst, ....., gebied 4 tekst
........


file2:
INC00011312, begindatum fieldA, einddatum fieldA
......
INC00023233, begindatum fieldB, einddatum fieldB
PBI00023232, begindatum fieldC, einddatum fieldC
......
INC00023073, begindatum fieldD, einddatum fieldD
......
INC00023132, begindatum fieldE, einddatum fieldE
.....
INC00023573, begindatum fieldF, einddatum fieldF
.....


Ik zou de bovengenoemde 2 dossiers willen samenvoegen dusdanig dat het resulterende samengevoegde csv dossier als volgt is:
INC00023233, beschrijving 1 tekst, gebied 1 tekst, ....., gebied 1 tekst, begindatum fieldB, einddatum fieldB
INC00023132, beschrijving 2 tekst, gebied 2 tekst, ....., gebied 2 tekst, begindatum fieldE, einddatum fieldE
INC00023073, beschrijving 3 tekst, gebied 3 tekst, ....., gebied 3 tekst, begindatum fieldD, einddatum fieldD
INC00023573, beschrijving 4 tekst, gebied 4 tekst, ....., gebied 4 tekst, begindatum fieldF, einddatum fieldF
.



UNIX loop ik ben een Redhat 4 maar ik heb PK-UX B11.11 (de tolk Perl is binnen
de servers Redhat maar ik ben niet te zeker over de servers PK-UX), zo het manuscript
op voorwaarde dat behoefte op die platforms kunnen lopen

Antwoord : Het manuscript van Unix Shell of manuscript Perl om twee die dossiers samen te voegen van de csvtekst op een gemeenschappelijke zeer belangrijke kolom worden gebaseerd

Het veronderstellen zijn er geen komma's op de diverse gebieden d.w.z. omvat de beschrijving, enz. geen komma's.

Een eenvoudigere methode zou kunnen zijn te gebruiken en mysql het eerste dossier en dan de kwestieupdates met gegevens van het tweede dossier te laden.

U kunt de output in een dossier opslaan en het laden.
Zorg in dit geval ervoor om toe te voegen #! /usr/local/bin/perl bij de bovenkant van het dossier en 1; aan het eind van het outputdossier zodat krijgt u geen fouten wanneer u het dossier vereist waar de knoeiboel. wordt opgeslagen.
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= " weg aan filename1 ";
mijn $hash= {};
open (File1, „<>) {
chomp ();
@array=split (/,/, $_);
#The bouwt hieronder een referenced knoeiboel van knoeiboel
$hash-> {$array [0]} {„bestaat“} =1;
$hash-> {$array [0]} {„beschrijving 1 test“} =$array [1];
$hash-> {$array [0]} {„gebied 1 test“} =$array [2];
$hash-> {$array [0]} {„gebied 2 test“} =$array [3];
.
.
.
}
#done met verwerking file1.
sluit (File1);
open (File2, „<>) {
chomp ();
@array=split (/,/, $_);
als (er bestaat $hash-> {$array [0]} {„bestaat“} en $hash-> {$array [0]} {„bestaat“} ==1) {
$hash-> {$array [0]} {„eerste gebied van tweede dossier“} =$array [1];
$hash-> {$array [0]} {„tweede gebied“} =$array [2];
$hash-> {$array [0]} {„derde gebied“} =$array [3];
.
.
.
.
}

}
#done met verwerkingsdossiers wanneer er passende sleutels zijn.
sluit (File2);

#you hebben nu een $hash die een verwijzing naar knoeiboel is.
foreach $key (sleutels % {$hash}) {
#    druk „$key: $hash-> {$key} \ n“;
        foreach $index (sleutels % {$hash-> {$key}}) {
           druk „\ $hash-> {„$key“} {„$index“} =$hash-> {$key} {$index} \ n“;
        }
}
Andere oplossingen  
 
programming4us programming4us