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