[Shell-script] Alignement de colonnes

Fermé
Phil - 25 avril 2007 à 11:36
dubcek Messages postés 18749 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 septembre 2024 - 1 nov. 2007 à 12:43
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

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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
25 avril 2007 à 15:51
Affiche ton script...

;-))
0
Phil > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
25 avril 2007 à 16:44
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > Phil
25 avril 2007 à 16:48
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
26 avril 2007 à 09:32
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
26 avril 2007 à 09:48
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
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
25 avril 2007 à 18:52
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 18749 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 septembre 2024 5 618
1 nov. 2007 à 12:43
et quelle est la différence ?
1
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 18749 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 septembre 2024 5 618
25 avril 2007 à 14:19
Hi
je dirai, mais je peux pas tester: awk '{printf("%-20s\n", $0}'
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
25 avril 2007 à 14:40
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
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
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