[Shell programming] Ecrire dans une colonne precise

Ecrire dans une colonne precise [Shell programming] - Shell/Batch - Programmation

Marsh Posté le 16-06-2006 à 11:37:40    

Bonjour, j'ai des listes de valeurs stockees dans des fichiers, pour ca pas de probleme je sais les recuperer. Mais j'aurais aime savoir s'il etait possible en shell d'ecrire ces valeurs dans des colonnes precises, et si cela n'est pas possible quel langage de programmation permet de faire ca?
Merci d'avance :)


---------------
||www.lefebvrecedric.com || Mon boulot
Reply

Marsh Posté le 16-06-2006 à 11:37:40   

Reply

Marsh Posté le 16-06-2006 à 11:38:02    

Des colonnes de quoi ? Définies comment ? Quel shell ?


Message édité par Elmoricq le 16-06-2006 à 11:38:12
Reply

Marsh Posté le 16-06-2006 à 11:50:22    

ouai, c 'est trop vague ..... donne des exemples ....

Reply

Marsh Posté le 16-06-2006 à 13:37:06    

Mon fichier de sortie doit avoir une totalite de 80 colonnes, mais le nombre de lignes est tres variable. Lorsque dans le prompt unix vous tapez n ou nedit il s'ouvre une fenetre de ce style. Et bien moi il se trouve que j'ai une serie de valeurs, dont les longueurs sont variables, qui doivent etre alignees tres precisement sur certaines colonnes (j'ai droit a des fourchettes du genre de la colonne 11 a la 20 et ainsi de suite). Ces valeurs constitueront alors, une fois alignees comme il faut, un jeu de donnees necessaire a un code de calcul capable d'aller lire chaque colonne.
 
Je ne sais pas comment ces colonnes sont definies, mais en ce qui concerne le shell ca m'est egal, j'utiliserai celui qui sera approprie.


---------------
||www.lefebvrecedric.com || Mon boulot
Reply

Marsh Posté le 16-06-2006 à 13:44:12    

Tu peux par exemple utiliser printf, pour formater ta ligne et imposer un format de sortie.

Reply

Marsh Posté le 16-06-2006 à 14:25:17    


ca m'a l'air bien le printf d'Elmoricq :
j ai créé un fichier drake.txt avec des champs séparés par des pipes
 

Code :
  1. $ cat drake.txt
  2. rfgdf|efghdgh|sdfgsdfg|sdfgsdf[|sfdgsdf[|sdfgdf
  3. 1231234|132345|dfgsdf|dsfgsdfg|234123|231234
  4. 5|5|7|8|9|333


 

Code :
  1. cat drake.txt  | awk -F"|" '{ printf ("%50s|%20s|%10s|%20s|%10s|%20s\n", $1, $2, $3, $4, $5 ,$6) } '
  2.                                              rfgdf|             efghdgh|  sdfgsdfg|            sdfgsdf[|  sfdgsdf[|              sdfgdf
  3.                                            1231234|              132345|    dfgsdf|            dsfgsdfg|    234123|              231234
  4.                                                  5|                   5|         7|                   8|         9|                 333
  5.                                                   |                    |          |                    |          |                   
  6.                                                   |                    |          |                    |          |

Reply

Marsh Posté le 16-06-2006 à 14:36:03    

On peut utiliser printf sans passer par awk, c'est également un binaire qu'on trouve en standard sur Unix (enfin il me semble).
 
Sinon oui, au pire, on peut aussi passer par awk pour accéder à printf. C'est le même de toute façon, à savoir comportement identique à printf() en C.
Dans tous les cas, ça permet des sorties formatées avec un format assez complet.


Message édité par Elmoricq le 16-06-2006 à 14:36:33
Reply

Marsh Posté le 16-06-2006 à 15:45:06    

Oui, je me suis pas mal renseigne sur printf depuis tout a l'heure, y'a de grandes chances pour que ca me convienne :)
Je vous remercie pour ces elements de reponses :)
 
edit: Gloo merci pour ton exemple :jap:


Message édité par drake83 le 16-06-2006 à 15:48:04

---------------
||www.lefebvrecedric.com || Mon boulot
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed