[resolu]différences entre deux fichiers

différences entre deux fichiers [resolu] - Shell/Batch - Programmation

Marsh Posté le 02-06-2008 à 10:59:13    

Bonjour voici mon problème:  
 
j'ai deux fichiers:
 

Code :
  1. fichier1:
  2. pomme
  3. poire
  4. banane


 

Code :
  1. fichier2:
  2. banane
  3. ananas
  4. pomme


 
J'ai besoin de récupérer dans un fichier résultat ou ce qu'il y a dans le fichier1 et pas dans le 2 ou ce qui n'est pas commun entre les 2 soit:
 

Code :
  1. fichier3:
  2. poire


 
ou
 

Code :
  1. fichier3:
  2. poire
  3. ananas


 
j'ai vu que la fonction diff va me donner certaines différences mais à moins qu'il y est une option que je n'ai pas compris ca ne correspond pas exactement à ce dont j'ai besoin. ou l'inverse de sort -u ???  
 
Plus précisemment j'essaie d'éviter le script vu chaque fichier fait plus de 50.000 lignes.
 
merci


Message édité par OyT le 02-06-2008 à 13:51:51

---------------
yop yop
Reply

Marsh Posté le 02-06-2008 à 10:59:13   

Reply

Marsh Posté le 02-06-2008 à 11:30:57    

Ah, c'est donc de l'Unix.
 
Pour récupérer ce qui n'est pas commun entre deux fichiers, diff est la commande habituelle, mais il faudrait que les fichiers soient triés, donc un petit sort ordinaire est à faire avant.
 
Pour récupérer ce qui est commun, il doit y avoir des astuces, mais je n'en ai pas qui me viennent à l'esprit immédiatement, donc je ferais un petit script, et je ne crois pas qu'il prendrait beaucoup de temps d'exécution même pour 50 000 lignes, si les fichiers sont triés au départ.

Reply

Marsh Posté le 02-06-2008 à 11:34:11    

Oui ils sont deja triés, mais j'essaie d'optimiser le temps de traitement, vu que l'ensemble de mon script me prend deja 50 minutes sans cette fonctionnalité ^^.... mais merci  


---------------
yop yop
Reply

Marsh Posté le 02-06-2008 à 12:48:40    

sort file1 file2 | uniq -u


En supposant que chaque ligne n'apparait pas plus d'une fois dans un fichier, sinon ça ne marche pas.

Message cité 1 fois
Message édité par matafan le 02-06-2008 à 12:49:42
Reply

Marsh Posté le 02-06-2008 à 13:51:31    

matafan a écrit :

sort file1 file2 | uniq -u


En supposant que chaque ligne n'apparait pas plus d'une fois dans un fichier, sinon ça ne marche pas.


 
ok merci du coup je fais
 

Code :
  1. sort file1 file2 | uniq -u >> file3


puis

Code :
  1. sort file1 file3 | uniq -d


 
super merci


---------------
yop yop
Reply

Sujets relatifs:

Leave a Replay

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