Rassembler dans un seul fichier des informations dispersées

Rassembler dans un seul fichier des informations dispersées - Shell/Batch - Programmation

Marsh Posté le 02-05-2007 à 10:31:01    

Bonjour,
 
je dispose de plusieurs fichiers contenant chacun un tableau de résultat du style :
 

  • Premier fichier :


FILE     SIZE  BLABLA  TRUC
test0   51250 3121     64
test1   5415   211      6
test2   152     30       96
 

  • Deuxieme fichier :


FILE     SIZE  BIDULE  CHOSE
test0   51250 35415   15
test1   5415   5445     6
test2   152     541       7
 
... etc. Je voudrais rassembler les informations dans un seul fichier. J'ai déjà ce qu'il faut pour récupérer les colonnes etc, mais je ne sais pas comment faire pour que les informations des fichiers viennent s'entremeler sur une même ligne. C'est à dire que j'obtiens quelque chose comme ça :
 
FILE     SIZE  BLABLA  TRUC
test0   51250 3121     64
test1   5415   211      6
test2   152     30       96
BIDULE  CHOSE
35415   15
5445     6
541       7
 
alors que je voudrais ceci :
 
FILE     SIZE  BLABLA  TRUC BIDULE  CHOSE
test0   51250 3121     64     35415   15
test1   5415   211      6       5445     6
test2   152     30       96      541       7
 
Une petite piste ? Merci :)

Reply

Marsh Posté le 02-05-2007 à 10:31:01   

Reply

Marsh Posté le 02-05-2007 à 14:20:56    

C'est un traitement que l'on nomme en anglais "merge" (voir ce nom dans Google).
Il y a mille et une façons de faire ça, parce que les données en entrée peuvent se présenter de mille et une façons différentes.
En général, le plus simple est de trier ses fichiers sur la même clef, puis de faire une boucle pour laquelle on fait avancer le fichier qui contient la plus petite clef. Excel est parfois un outil intéressant pour ce genre de tâche.

Reply

Marsh Posté le 02-05-2007 à 16:33:35    

Resalut... j'arrive maintenant à encastrer les infos des différents fichiers, sauf que j'ai des \n en trop. Il faudrait un \n uniquement à la fin des lignes extraites du dernier fichier contenant les infos, et des espaces ailleurs... La commande tr ne m'aide pas, puisque la redirection >> vers un fichier que j'utilise ensuite ajoute automatiquement des \n... Je voudrais effectuer un traitement sur le fichier final pour remplacer les \n en trop par des espaces.
 
Je sais pas si je me fait bien comprendre, exemple de ce que j'ai :
 
11 12 13
14 15
16
21 22 23
24 25
26
 
et je voudrais :
 
11 12 13 14 15 16
21 22 23 24 25 26
 
Je pense qu'il faut utiliser sed et awk, mais un peu d'aide serait la bienvenue ! Merci.


Message édité par souliane le 02-05-2007 à 16:35:49
Reply

Marsh Posté le 02-05-2007 à 16:39:01    

Oh je suis trop débile... c'est bon je vois comment faire (utiliser une variable et faire le >> une seule fois par ligne de résultat final).

Reply

Marsh Posté le 03-05-2007 à 00:13:16    

Sous unix/linux y'a la commande "join" qui est faite pour ça.

Reply

Marsh Posté le 03-05-2007 à 15:16:54    

Ah ben là, si j'avais su... merci :)

Reply

Sujets relatifs:

Leave a Replay

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