Formatage sortie écran

Résolu
maverick301172 -  
 maverick301172 -
Bonjour,

Voilà mon pb !!

Je voudrais formater une sortie du style :

sum;schema;table;colonne;type;indicateur;delta;SOURCE;CIBLE
tabstruct;S1;T1;*;_COUNT;_COUNT;0;122511;122511
okastruct;S1;T1;*;_OK_A;_OK_A;92,13%;83;90

sous le format :

|----------|--------|-------|----------|--------|------------|-------|----------|----------|
|   sum    | schema | table | colonne  | type   | indicateur | delta | SOURCE   | CIBLE    |
|----------|--------|-------|----------|--------|------------|-------|----------|----------|
|tabstruct |S1      |T1     |*         |_COUNT  |_COUNT      |0      |122511    |122511    |
|okastruct |S1      |T1     |*         |_OK_A   |_OK_A       |92,13% |83        |90        |
|----------|--------|-------|----------|--------|------------|-------|----------|----------|


j'ai bien essayé avec un sed ==> sed -e 's/; */ | /g', mais c'est l'anarchie !!

Si quelqu'un avait une soluce, je suis preneur.

Merci d'avance

°O°
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Regarde du côté de "awk" et de la commande "printf" ;-))
1
maverick301172
 
C'est ce que je suis en train de regarder, mais je ne trouve pas le moyen de donner une longueur à une colonne, mise à par en ajoutant 10 espaces et en faisant un substr sur la chaine.

il doit y avoir une autre solution !!!
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
#! /bin/awk -f

BEGIN {
FS=";"
printf "|----------|----------|----------|----------|----------|----------|----------|----------|----------|\n"
}

NR==1 {
printf "|%-10s|%-10s|%-10s|%-10s|%-10s|%-10s|%-10s|%-10s|%-10s|\n",$1,$2,$3,$4,$5,$6,$7,$8,$9
printf "|----------|----------|----------|----------|----------|----------|----------|----------|----------|\n"
}

(NR==2),(NR==$NR) {
printf "|%-10s|%-10s|%-10s|%-10s|%-10s|%-10s|%-10s|%-10s|%-10s|\n",$1,$2,$3,$4,$5,$6,$7,$8,$9
}

END {
printf "|----------|----------|----------|----------|----------|----------|----------|----------|----------|\n"
}
;-))
1
maverick301172
 
C'est super, merci beaucoup pour ton aide, j'y étais presque, j'avais déjà fait ça
awk 'BEGIN { print ("+----------+--------+-------+----------+--------+------------+-------+----------+----------+")
print ("| sum | schema | table | colonne | type | indicateur | delta | SOURCE | CIBLE |")
print ("+----------+--------+-------+----------+--------+------------+-------+----------+----------+")
FS=";"}
{print ("|")
printf (%10s, $1}
print ("|")
printf (%8s, $2}
print ("|")
printf (%7s, $3}
print ("|")
printf (%10s, $4}
print ("|")
printf (%8s, $5}
print ("|")
printf (%12s, $6}
print ("|")
printf (%7s, $7}
print ("|")
printf (%10s, $8}
print ("|")
printf (%10s, $9}
print ("|")}
END { print ("+----------+--------+-------+----------+--------+------------+-------+----------+----------+") }'



Mais je préfère ta solution.

encore une fois merci
0