Bonjour,
J'ai un fichier comme suit :
8921301415753523385|KEY|7110452091
8921301415753523385|LASTNAME|Abik
8921301415753523385|FIRSTNAME|mehamed
8921301415753523385|BIRTHDATE|19821029
8921301415753523385|IDTYPE|pc
8921301415753523385|IDNUMBER|12345
8921301415753523385|ADDRESS|cite zahaf 250n08 djelfa
8921301415753523385|WILAYA|17
8921301415763133720|KEY|7120338689
8921301415763133720|LASTNAME|Amrou
8921301415763133720|FIRSTNAME|abdedjabar
8921301415763133720|BIRTHDATE|19920610
8921301415763133720|IDTYPE|Pc
8921301415763133720|IDNUMBER|23456
8921301415763133720|ADDRESS|msila
8921301415763133720|WILAYA|28
Si vous avez remarquer, le premier champs contient des valeurs qui se répètent, et j'aimerai bien les regrouper en une seule ligne
Je cherche a avoir le résultat :
8921301415753523385|KEY|7110452091|LASTNAME|Abik|FIRSTNAME|mehamed|BIRTHDATE|19821029|IDTYPE|pc|IDNUMBER|12345|ADDRESS|cite zahaf 250n08 djelfa|WILAYA|17
8921301415763133720|KEY|7120338689|LASTNAME|Amrou|FIRSTNAME|abdedjabar|BIRTHDATE|19920610|IDTYPE|Pc|IDNUMBER|23456|ADDRESS|msila|WILAYA|28
J'ai tenté avec le script (qui ne marche pas) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 #!/usr/bin/perl use strict; sub usage () { print STDERR "\nUsage : $0 fichier.txt file-ICCID \n"; exit(1); } my $FicResult = "result.txt"; open(SORTIE, "> $FicResult") or die("Erreur lors de la creation du fichier $FicResult : $!\n"); open ICCID, "< $ARGV[1]" or die "Can't open file $ARGV[0]: $!"; open MarkOUT, "< $ARGV[0]" or die "Can't open file $ARGV[0]: $!"; my @MarkOUTLine; my @tab1; my @tab2; my @tab3; my @tab4; my @tab5; my @tab6; my @tab7; my @tab8; my %SDPHash; my $variccid; my $list; while ( <ICCID> ) { chomp; $variccid = $_; while (<MarkOUT>) { @MarkOUTLine = split(/|/, $list); if ( exists $SDPHash { $MarkOUTLine[0] } ) { @tab1 = {$MarkOUTLine[1],$MarkOUTLine[2]}; @tab2 = {$MarkOUTLine[1],$MarkOUTLine[2]}; @tab3 = {$MarkOUTLine[1],$MarkOUTLine[2]}; @tab4 = {$MarkOUTLine[1],$MarkOUTLine[2]}; @tab5 = {$MarkOUTLine[1],$MarkOUTLine[2]}; @tab6 = {$MarkOUTLine[1],$MarkOUTLine[2]}; @tab7 = {$MarkOUTLine[1],$MarkOUTLine[2]}; @tab8 = {$MarkOUTLine[1],$MarkOUTLine[2]}; print SORTIE "$MarkOUTLine[0],$tab1[0],$tab1[1],$tab2[0],$tab2[1],$tab3[0],$tab4[1], $tab5[0],$tab6[1],$tab7[0],$tab7[1],$tab8[0],$tab8[1]\n"; } } } close (MarkOUT); close (SORTIE); close (ICCID);
Pouvez vous SVP m'aidez sur la solution, je sais qu'il faut utiliser les hash, mais j'ai des difficultés a utiliser les hash.
Merci.
Partager