[Shell-script] Alignement de colonnes

Phil -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut à tous.

Comment faire pour aligner des colonnes par la droite. Voilà le type de fichier que je posséde :
-24.0068
25.2567
0.5895
5.26597
84.2389


Je voudrais obtenir :
-24.0068
 25.2567
  0.5895
 5.26597
 84.2389

Si l'un de vous à la réponse, bah ça m'intéresse :)

Merçi d'avance.
Configuration: Windows XP
Firefox 2.0.0.3

8 réponses

  1. Phil
     
    Merçi jipicy, ta méthode fonctionne parfaitement, mais impossible de la mettre en place dans un script. Si je l'écrit tel quelle, le script tourne en boucle.
    As-tu une idée là dessus ?
    2
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Affiche ton script...

      ;-))
      0
    2. Phil > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Tiens, mais du coup je l'ai fait avec un awk et printf :
      #!/bin/ksh
      
      awk '{printf ("%8s\n",$1)}' $1 > tmp1
      awk '{printf ("%8s\n",$2)}' $1 > tmp2
      awk '{printf ("%8s\n",$3)}' $1 > tmp3
      awk '{printf ("%8s\n",$4)}' $1 > tmp4
      awk '{printf ("%3s\n",$5)}' $1 > tmp5
      awk '{printf ("%8s\n",$6)}' $1 > tmp6
      awk '{printf ("%8s\n",$7)}' $1 > tmp7
      
      paste tmp1 tmp2 tmp3 tmp4 tmp5 tmp6 tmp7 > $1
      rm tmp*
      exit
      0
    3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > Phil
       
      Pourrait-on voir la "gueule" du ficher d'entrée aussi ($1) ?
      Merci ;-))

      PS. Ton script me parrait bien lourd vu comme ça ;-((
      0
    4. Phil > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Salut jipicy, voilà une parite du fichier d'entrée :
      71.1426	-14.6447   P    2.50	     SCO	 70 29  0.0  -21-57 -0.0 0.069   DNK
      71.1426	-14.6447   P   10.25	     KBS	 78 55 32.2   11 56 30.1 0.074   BER
      71.1426	-14.6447   P   10.64	    SPB4	 78 10 44.0   16 20 53.5 0.340   NAO
      71.1426	-14.6447   S   10.25	     KBS	 78 55 32.2   11 56 30.1 0.074   BER

      J'ai volontairement supprimé les 2 premières colonnes sinon l'ensemble ne rentrait pas en largeur, les substring du awk ne correspondent donc pas.

      PS : Je sais bien que le script est un peu lourd mais je fais avec ce je que je connais (je suis encore débutant) :)

      Bien sûr si tu peux "optimiser" tout ça, tes suggestions seront plus que bienvenue :))
      0
    5. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
       
      A adapter en fonction de la sortie désirée :
      awk '{printf ("%8s %8s %8s %8s %4s %8s %8s %8s\n",$1,$2,$3,$4,$5,$6,$7,$8)}' fichier
      ;-))
      0
  2. chipo
     
    svp pouvez vous m'aider sur une commande shell qui permet
    de verifier si un nom comporte le caractére spécial '
    puis d'ajouter un \avant le caractére ' pour permettre d'insérer un nom dans une base de donné mysql
    merci de m 'avoir aider
    2
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Salut,
      [jp@MDK tmpfs]$ var="l'avenir de l'étoile"
      
      [jp@MDK tmpfs]$ echo $var
      l'avenir de l'étoile
      
      [jp@MDK tmpfs]$ echo $var | sed "s/'/\\\'/g"
      l\'avenir de l\'étoile
      
      [jp@MDK tmpfs]$
      ;-))
      0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    et quelle est la différence ?
    1
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    Hi
    je dirai, mais je peux pas tester: awk '{printf("%-20s\n", $0}'
    0
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Ou avec la commande "printf" du shell :
    jp@MDK:~/tmpfs ssh$ cat plop
    
    -24.0068
    25.2567
    0.5895
    5.26597
    84.2389
    
    jp@MDK:~/tmpfs ssh$ while read i;do printf "%8s\n" "$i";done <plop
    
    -24.0068
     25.2567
      0.5895
     5.26597
     84.2389
    
    jp@MDK:~/tmpfs ssh$
    ;-))
    0
  7. Phil
     
    Alors autant pour moi, ça marche ! le problème est résolu. Mes excuses à dubsek, j'ai fait une erreur en tapant le awk et j'ai alors pensé que ta méthode ne fonctionnait pas....Elle marche, en fait, super bien.
    Merçi à vous deux.
    0
  8. piposa
     
    Bonjour,
    Je voulais savoir comment ont peut faire la même chose avec un programme C, Je m'explique :

    J'ai un prog en C qui affiche :

    150
    24000
    300

    Le résultat que je veut avoir :

    150
    24000
    300

    Merci
    -2