[Shell-script] Alignement de colonnes

Phil -  
dubcek Messages postés 19021 Statut Contributeur -
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.
A voir également:

8 réponses

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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Affiche ton script...

;-))
0
Phil > jipicy Messages postés 41342 Statut Modérateur
 
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
jipicy Messages postés 41342 Statut Modérateur 4 896 > 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
Phil > jipicy Messages postés 41342 Statut Modérateur
 
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
jipicy Messages postés 41342 Statut Modérateur 4 896 > jipicy Messages postés 41342 Statut Modérateur
 
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
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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
dubcek Messages postés 19021 Statut Contributeur 5 637
 
et quelle est la différence ?
1
Phil
 
Personne n'a d'idées ? :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 19021 Statut Contributeur 5 637
 
Hi
je dirai, mais je peux pas tester: awk '{printf("%-20s\n", $0}'
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
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
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