[BASH / AWK] Alignement de colonnes ... galère ! [Résolu]

Alignement de colonnes ... galère ! [Résolu] [BASH / AWK] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 01-12-2009 à 11:06:17    

Bonjour,
 
Je suis en train de faire un petit script me permettant (entre autre) de remplacer le bon vieux 'du -k' sur ma machine.
 
Voici un exemple de résultat de mon script :
 

Code :
  1. bea ----  337107 Ko ---- 30 % ---- ###############################
  2. bea.tar ----  145536 Ko ---- 13 % ---- ##############
  3. checkconfig8.1 ----  1670 Ko ---- 0 % ---- #
  4. genpack ----  482 Ko ---- 0 % ---- #
  5. legato ----  30648 Ko ---- 2 % ---- ###
  6. lost+found ----  8 Ko ---- 0 % ---- #
  7. ncftp ----  1640 Ko ---- 0 % ---- #
  8. patrol ----  532573 Ko ---- 48 % ---- #################################################
  9. psmeter ----  8964 Ko ---- 0 % ---- #
  10. tivoli ----  42114 Ko ---- 3 % ---- ####
  11. TOTAL /logiciels ---- 1100743 ---- 100%


 
Je voudrais juste afficher ces informations, mais avec les colonnes alignées ! (surtout la dernière qui est censé représenter des "barres" d'occupation d'une arbo. Donc pour que ce soit plus visuel, il faudrait qu'elles partent toutes du même point...). Le top tu top, c'est que ça ressemble à ceci (à quelques espaces prêts) :
 

Code :
  1. bea                     ----  337107 Ko ---- 30 %  ---- ###############################
  2. bea.tar                ----  145536 Ko ---- 13 %  ---- ##############
  3. checkconfig8.1      ----     1670 Ko ---- 0 %   ---- #
  4. genpack               ----       482 Ko ---- 0 %   ---- #
  5. legato                  ----    30648 Ko ---- 2 %   ---- ###
  6. lost+found            ----           8 Ko ---- 0 %  ---- #
  7. ncftp                   ----      1640 Ko ---- 0 %  ---- #
  8. patrol                   ----  532573 Ko ---- 48 % ---- #################################################
  9. psmeter                ----     8964 Ko ---- 0 %   ---- #
  10. tivoli                     ----   42114 Ko ---- 3 %   ---- ####
  11. TOTAL /logiciels      ----    1100743 ---- 100%


 
[EDIT -> Bon l'affichage foire sur le forum, mais vous voyez ce que je voudrais faire]
 
 
Vous vous doutez bien que la taille de chacune des colonne est variable...  
 
 
Voici mon bout de code qui gère l'affichage :
 
 

Code :
  1. ls $REP_SRC | while read line
  2.         do
  3.                 PRCT=$((100*`du -sk ${line}|awk '{print $1}'`/${TAILLE_TOTALE}))
  4.                 TAILLE_REP=$(du -sk ${line}|awk '{print $1}')
  5.                 # Calcul de la barre de progression par arbo
  6.                 BARRE_PROGRESS="#"
  7.                 i=0
  8.                 while [[ $i -ne $PRCT ]]
  9.                 do
  10.                         BARRE_PROGRESS=$BARRE_PROGRESS"#"
  11.                         i=$(($i+1))
  12.                 done
  13. # Affichage non formate qui fonctionne         
  14. echo "${line} ----  $TAILLE_REP Ko ---- $PRCT % ---- $BARRE_PROGRESS"
  15.         done > $FIC_SORT
  16. echo "TOTAL $REP_SRC ---- $TAILLE_TOTALE ---- 100% " >> $FIC_SORT


 
 
 
Quelqu'un à t'il une idée pour faire cela ? (J'en viens à penser que ce n'est pas possible avec AWK ...)
 
 
Merci  :jap:


Message édité par tanshiro le 02-12-2009 à 14:11:13
Reply

Marsh Posté le 01-12-2009 à 11:06:17   

Reply

Marsh Posté le 01-12-2009 à 12:10:36    

printf


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 01-12-2009 à 14:26:29    

J'ai essayé ça :
 

Code :
  1. # Affichage non formate qui fonctionne         
  2. echo "${line} ----  $TAILLE_REP Ko ---- $PRCT % ---- $BARRE_PROGRESS"
  3. #       printf "%-20s %-10s %-10s %-10s \n"${line} $TAILLEDU  $PRCT, $BARRE_PROGRESS
  4. #       printf("%-15s %-35s %-35s\n",${line},$PRCT,$BARRE_PROGRESS);


 
 
 
 
Mais ça fait aps ce que j'aimerai ... T'as une piste sur le printf ?


Message édité par tanshiro le 01-12-2009 à 14:26:58
Reply

Marsh Posté le 01-12-2009 à 17:30:18    

vire [[ pour [, bashisme pas beau (inutile qui plus est)
 
et pour le printf:  
 
printf "%-20.19s %-10.9s %-10.9s %-10.9s \n" "${line}" "$TAILLEDU" "$PRCT" "$BARRE_PROGRESS"


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 01-12-2009 à 19:59:24    

T'as essayé la commande column -t ?

Reply

Marsh Posté le 02-12-2009 à 14:10:40    

Ho yeah, ça marche !
 
Merci beaucoup zecrazytux !  :jap:  (bon après je sais pas à quoi correspond ton truc a virgule, mais en tripatouillant, je vais voir).
Encore merci
 
Albator, nan j'ai pas essayé, mais je vais regarder ça pour ma culture perso.
 
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed