Bonjour,
Mon but est de supprimer la dernière ligne de mon fichier via un script AWK
Fichier initial qui comprend une ligne blanche à la fin: fichier.csv
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $ cat fichier.csv "DUPONT","HENRI","PARIS","FR","12-08-1950","123456789","FR12345","GU","120","EUR","CARTE","11" "DUPONT","HENRI","PARIS","FR","12-08-1950","123456789","FR12345","GU","120","EUR","CARTE","11" "MARTIN","LUCIEN","PARIS","FR","20-02-2000","412566655","FR43333","GA","420","EUR","CHEQUE","1" "LECOMTE","CATHERINE","PARIS","FR","21-08-1989","842216654","FR8523","GC","25000","EUR","CARTE","15" "MARTIN","JACQUES","PARIS","FR","21-08-1902","9876543210","FR456788","GA","3600","EUR","CHEQUE","58" "MARTIN","JACQUES","PARIS","FR","21-08-1902","9876543210","FR456788","GC","25000","EUR","CARTE","120" $
Mon but est d'avoir le fichier suivant (fichier résultat.csv)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 1;1;MARTIN;LUCIEN;PARIS;20/FEB/2000;412566655;FR43333;GA;420;EUR;CH; 2;178;MARTIN;JACQUES;PARIS;21/AUG/1902;9876543210;FR456788;GA;3600;EUR;CH;GC;25000;EUR;CB; 1;15;LECOMTE;CATHERINE;PARIS;21/AUG/1989;842216654;FR8523;GC;25000;EUR;CB; 2;22;DUPONT;HENRI;PARIS;12/AUG/1950;123456789;FR12345;GU;120;EUR;CB;GU;120;EUR;CB;
Pour supprimer une ligne blanche, on peut utiliser awk
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 awk 'NF > 0' filename awk NF file awk '!/^$/' file
Je ne parviens pas à l'intégrer dans mon script awk
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 #!/usr/bin/awk -f BEGIN { FS="\",\"" b=";" } { gsub(/"/,"",$1) gsub(/-01-/,"/JAN/",$5) gsub(/-02-/,"/FEB/",$5) gsub(/-03-/,"/MAR/",$5) gsub(/-04-/,"/APR/",$5) gsub(/-05-/,"/MAY/",$5) gsub(/-06-/,"/JUN/",$5) gsub(/-07-/,"/JUL/",$5) gsub(/-08-/,"/AUG/",$5) gsub(/-09-/,"/SEP/",$5) gsub(/-10-/,"/OCT/",$5) gsub(/-11-/,"/NOV/",$5) gsub(/-12-/,"/DEC/",$5) $11=$11=="CARTE"?"CB":"CH" a=$1b$2b$3b$5b$6b$7 ++c[a] e[a]=e[a]$8b$9b$10b$11b g[a]=g[a]+$12 } END { for(i in c)print c[i]b g[i]b i b e[i] }
J'ai donc cela en résultat final
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 1;0; ;;;;;;;;;CH; 1;1;MARTIN;LUCIEN;PARIS;20/FEB/2000;412566655;FR43333;GA;420;EUR;CH; 2;178;MARTIN;JACQUES;PARIS;21/AUG/1902;9876543210;FR456788;GA;3600;EUR;CH;GC;25000;EUR;CB; 1;15;LECOMTE;CATHERINE;PARIS;21/AUG/1989;842216654;FR8523;GC;25000;EUR;CB; 2;22;DUPONT;HENRI;PARIS;12/AUG/1950;123456789;FR12345;GU;120;EUR;CB;GU;120;EUR;CB;
Quelqu'un aurait-il aussi une meilleure idée pour le changement de date?
Merci d'avance
Partager