[UNIX] - comparaison fichiers

- comparaison fichiers [UNIX] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 16-01-2006 à 09:40:36    

Bonjour,
 
 
J'aurais besoin d'un petit peu d'aide sur des commandes UNIX (certainement de base pour certains).
 
Possédant 2 fichiers, avec des noms, je souhaite connaitre ceux présents dans le premier fichier et non présent dans le second. Quelqu'un a-t-il une idée de la commande à utiliser?
 
Par avance, je vous en remercie.
 
Nbabs

Reply

Marsh Posté le 16-01-2006 à 09:40:36   

Reply

Marsh Posté le 16-01-2006 à 10:11:42    

Salut,
 
Tu peux utiliser la commande diff.
 
ex :
 

Code :
  1. bash-2.05# more test1
  2. salut
  3. bash-2.05# more test2
  4. salut
  5. bonjour
  6. bash-2.05# diff test1 test2
  7. 1a2
  8. > bonjour


Reply

Marsh Posté le 16-01-2006 à 19:23:45    

dkape a écrit :

Salut,
 
Tu peux utiliser la commande diff.
 
ex :
 

Code :
  1. bash-2.05# more test1
  2. salut
  3. bash-2.05# more test2
  4. salut
  5. bonjour
  6. bash-2.05# diff test1 test2
  7. 1a2
  8. > bonjour



 
Sauf que la commande diff effectue une comparaison ligne à ligne... une fois qu'un décalage est fait, après c'est mort :(

Reply

Marsh Posté le 16-01-2006 à 20:07:07    

ALors il ne te reste plus qu'à faire un script fonctionnant de cette manière :
1- on analyse ligne par ligne le 1er fichier
2- on fait un grep '^$lachainedecaractère$'
3- si le retour est nul -> alors cette ligne n'est pas dans le 2ème fichier
4- après avoir analyser le 1er fichier, on fait la même chose mais cette fois-ci avec le 2ème fichier.

Reply

Marsh Posté le 16-01-2006 à 20:53:01    

jlighty a écrit :

ALors il ne te reste plus qu'à faire un script fonctionnant de cette manière :
1- on analyse ligne par ligne le 1er fichier
2- on fait un grep '^$lachainedecaractère$'
3- si le retour est nul -> alors cette ligne n'est pas dans le 2ème fichier
4- après avoir analyser le 1er fichier, on fait la même chose mais cette fois-ci avec le 2ème fichier.


 
Oui, c'est tout à fait ce que je veux faire. N'existe-t-il pas une fonction unix permettant de faire ca?

Reply

Marsh Posté le 16-01-2006 à 21:02:38    

#!/usr/bin/perl
 
use strict;
 
my %f2;
 
open F, $ARGV[1] or die $!;
while (<F> ) {
        $f2{$_} = 1;
}
close F;
 
open F, $ARGV[0] or die $!;
while (<F> ) {
        print unless $f2{$_};
}
close F;

Reply

Marsh Posté le 16-01-2006 à 21:27:07    

ben tu fais un sort et après un diff -u

Reply

Sujets relatifs:

Leave a Replay

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