#1 Le 25/03/2012, à 12:58
- syca
Utilser awk pour afficher un fichier csv
Bonjour tout le monde ,
Je sollicite votre aide car j'ai du mal a m'en sortir avec la commande awk. J'aimerai afficher a l'écran un fichier csv en colonne.
Exemple fichier csv:
Nom,Prénom,Numéro,vitesse
Gou,Georges,15,70
Prole,Bernard,18,80
Thlam,Thierry,10,90
Ce qui donnerai avec awk :
Nom Prénom Numéro Vitesse
Gou Georges 15 70
Prole Bernard 18 80
Thlam Thierry 10 90
Enfin plus ou moins, donc que les séparateur soit convertis en tabulation et peut être mettre des | pour séparer les colonnes. Je tiens vraiment a utiliser awk.
Je vous remercie beaucoup pour votre aide.
Je vous souhaite un bon dimanche.
Merci d'avance.
Hors ligne
#2 Le 25/03/2012, à 13:09
- sputnick
Re : Utilser awk pour afficher un fichier csv
Salut, voici :
awk -F, '
function printdashes() {
print "+----------+----------+----------+----------+"
}
function printmain() {
printf("|%10s|%10s|%10s|%10s|\n", $1, $2, $3, $4)
}
BEGIN{
printdashes()
}
{
if (NR==1) {
printf("\033[1m| %-6s| %-8s| %-8s| %-8s|\033[0m\n", $1, $2, $3, $4)
} else if (NR==2) {
printdashes()
printmain()
} else {
printmain()
}
}
END{
printdashes()
}' FILE.CSV
Dernière modification par sputnick (Le 25/03/2012, à 13:55)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 26/03/2012, à 12:47
- syca
Re : Utilser awk pour afficher un fichier csv
Bonjour,
Merci pour votre réponse, çà m'a l'air géniale. C'est vraiment gentil .
çà ne marche je suppose que si on connais le nombre de colonne et la longeur maximum d'une ligne ? Je me demandais si on pourvais le faire sans connaitre à l'anvance ces deux mesures ?
Encore merci.
Bonne journée.
Hors ligne
#4 Le 26/03/2012, à 12:52
- Haleth
Re : Utilser awk pour afficher un fichier csv
Ou plus basiquement:
sed 's/,/\t/g' file.csv
Ubuntu is an ancien African word which means "I can't configure Debian"
Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.
Hors ligne
#5 Le 26/03/2012, à 14:24
- sputnick
Re : Utilser awk pour afficher un fichier csv
Merci pour votre réponse, çà m'a l'air géniale. C'est vraiment gentil .
Merci à toi.
çà ne marche je suppose que si on connais le nombre de colonne et la longeur maximum d'une ligne ? Je me demandais si on pourvais le faire sans connaitre à l'anvance ces deux mesures ?
Lance ça dans un terminal :
awk -vcol=$COLUMNS '
BEGIN{
mystr = "Peux t\047on etre au centre et faire de l\047informatique sans etre branche modem ?"
len = length(mystr)
num=(col+len)/2
CONVFMT="%"int(num)"s\n"
printf(CONVFMT, mystr)
}
'
Ça répond à la question
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#6 Le 27/03/2012, à 11:11
- Postmortem
Re : Utilser awk pour afficher un fichier csv
Salut,
awk 'BEGIN { FS="," }
{
if ( NF > NB_CHAMPS ) NB_CHAMPS=NF
for ( NUM_CHAMP=1; NUM_CHAMP <= NF; NUM_CHAMP++ ) {
if ( length($NUM_CHAMP) > LONGUEUR[NUM_CHAMP] ) LONGUEUR[NUM_CHAMP]=length($NUM_CHAMP)
CHAMP[NR,NUM_CHAMP]=$NUM_CHAMP
}
}
END {
for ( LIGNE=1; LIGNE <= NR; LIGNE++ ) {
for ( NUM_CHAMP=1; NUM_CHAMP < NB_CHAMPS; NUM_CHAMP++ ) {
printf ( "%-"LONGUEUR[NUM_CHAMP]+1"s", CHAMP[LIGNE,NUM_CHAMP] )
}
printf ( "%-"LONGUEUR[NB_CHAMPS]"s\n", CHAMP[LIGNE,NB_CHAMPS] )
}
}' fichier.csv
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#7 Le 28/03/2012, à 19:33
- syca
Re : Utilser awk pour afficher un fichier csv
Bonsoir,
Super merciii, çà marche impec
Bonne soirée.
Hors ligne
#8 Le 28/03/2012, à 21:30
- Postmortem
Re : Utilser awk pour afficher un fichier csv
De rien ! Bonne soirée
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#9 Le 28/03/2012, à 22:22
- sputnick
Re : Utilser awk pour afficher un fichier csv
Tout ça pour si peu ?
$ column -t -s","
Nom Prénom Numéro vitesse
Gou Georges 15 70
Prole Bernard 18 80
Thlam Thierry 10 90
Dernière modification par sputnick (Le 28/03/2012, à 22:34)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#10 Le 28/03/2012, à 22:36
- pingouinux
Re : Utilser awk pour afficher un fichier csv
En reprenant l'idée de sputnick #9, il y a encore plus simple :
column -ts, fichier.csv
Ajouté : Il m'a devancé
Dernière modification par pingouinux (Le 28/03/2012, à 22:36)
Hors ligne
#11 Le 28/03/2012, à 22:41
- Postmortem
Re : Utilser awk pour afficher un fichier csv
Ah ben oui en effet, ça va bcp plus vite à taper!! Je ne connaissais pas column, je note !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#12 Le 06/04/2012, à 15:01
- Postmortem
Re : Utilser awk pour afficher un fichier csv
Salut,
Je testais column là mais y'a un souci, il "mange" les champs vides le vilain !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#13 Le 06/04/2012, à 16:45
- pingouinux
Re : Utilser awk pour afficher un fichier csv
Il faut ajouter l'option -n. Voici un extrait de man column
-n By default, the column command will merge multiple adjacent
delimiters into a single delimiter when using the -t option; this
option disables that behavior. This option is a Debian GNU/Linux
extension.
Hors ligne
#14 Le 06/04/2012, à 18:35
- Postmortem
Re : Utilser awk pour afficher un fichier csv
Ils sont bien chez Debian, mais sur les serveurs du taf, on a pas cette option (j'avais pris le temps d'aller voir le man quand meme avant de poster )
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne