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

      ;-))
      0
    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
      0
    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 ;-((
      0
    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 :))
      0
    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
      ;-))
      0
  2. 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. 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]$
      ;-))
      0
  3. Contributeur
    et quelle est la différence ?
    1
    1. Contributeur
      Hi
      je dirai, mais je peux pas tester: awk '{printf("%-20s\n", $0}'
      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$
        ;-))
        0
        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.
          0
          1. 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