[Shell-script] Alignement de colonnes

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. 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 ?
    1. Modérateur
      Affiche ton script...

      ;-))
    2. @jipicyTiens, 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
    3. Modérateur
      @PhilPourrait-on voir la "gueule" du ficher d'entrée aussi ($1) ?
      Merci ;-))

      PS. Ton script me parrait bien lourd vu comme ça ;-((
    4. @jipicySalut 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 :))
    5. Modérateur
      @jipicyA 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
      ;-))
  2. Contributeur
    Hi
    je dirai, mais je peux pas tester: awk '{printf("%-20s\n", $0}'
    1. Modérateur
      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$
      ;-))
      1. 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.
        1. 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
          1. Modérateur
            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]$
            ;-))
        2. 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