Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/11/2004, 14h49   #1
Invité de passage
 
Inscription : février 2003
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 4
Points : 1
Points : 1
Par défaut Comparer 2 fichiers

Bonjour à tous,

Je cherche une commande en shell pour pouvoir comparer 2 fichier et effacer les doublons pour avoir en resultat que les differences.

ex:

fichier1:
Citation:
toto
titi
tata
tete
fichier2:
Citation:
toto
titi
et comme resultat en comparant les 2 fichier, il me faut:
Citation:
tata
tete


voila, si quelqu'un pourrais m'aider, je lui serais reconnaissant

PS: dsl pour cet exemple un peu nul...
GuiltyX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2004, 14h59   #2
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
permière piste :
'man diff'
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2004, 15h05   #3
Invité de passage
 
Inscription : février 2003
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 4
Points : 1
Points : 1
merci je connaissais pas cette commande
GuiltyX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2004, 15h37   #4
Modérateur
 
Avatar de ggnore
 
Inscription : juillet 2004
Messages : 2 245
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2004
Messages : 2 245
Points : 1 902
Points : 1 902
il y a aussi cmp mais j'utilise diff comme le propose le posteur avant moi.
ggnore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2004, 17h33   #5
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
je pense que 'cmp' est plus approprié pour comparer des ficheirs binaire car il compare les fichier byte à byte comme il est dit dans le man :
cmp - compare two files byte by byte
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2004, 01h11   #6
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
La commande cmp indique si les fichiers sont identiques.

Syntaxe:
La commande diff recherche les différences entre deux fichiers.

Syntaxe
Voilà @++
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2004, 01h35   #7
Membre émérite
 
Inscription : mai 2002
Messages : 727
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 727
Points : 982
Points : 982
Tu peux te dépatouiller avec awk pour avoir le format de sortie que tu as écrit

Code :
{ cat a | sort | uniq ; echo -- ; cat b | sort | uniq } | awk 'BEGIN { x = 1 } $1 == "--" {x *= 2} $1 != "--" { tab[$0] += x } END { for (i in tab){ if (tab[i] != 3) print i } }'
J'a séparé a et b par une ligne de délimitation '--' ... Je vire les doublons avec uniq dans les listes... Mais avant il faut les trier, d'où "cat a | sort | uniq"

Pour le script awk, y'a diverses manière de faire, je trouve ca assez propre... Si on considère les valeurs que j'ajoute (1 et 2) en binaire (01 et 10) selon que ca soit le premier ou second fichier, pour chaque ligne on aura 01 si unqiuement dans le fichier 1, 10 si uniquement dans le fichier 2... 11 si dans les deux ... (Et pas de ligne si dans aucun ) .... Donc si différent de 3, alors c'est que c'est une ligne qui n'apparait pas dans tous les fichiers .... Ca présente l'avantage d'etre rapidement adaptable à 3 fichiers ou plus (interet du '*=') et on peut aisément retrouver le ou les fichier(s) dans le(s)quel(s) la chaine se trouve grace a ce numéro
__________________

Smortex

Les FAQ Assembleur - Linux
In The Beginning Was The Command Line Neal Stephenson
Smortex est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h05.


 
 
 
 
Partenaires

Hébergement Web