[diff] comparer 2 fichiers

Ce qui ne concerne ni le forum ni des problèmes
djaac
Daikyu
Messages : 68
Inscription : mar. 23 janv. 2007, 19:22

[diff] comparer 2 fichiers

Message par djaac »

Bonjour,

j'ai 2 fichiers composés de nom,
j'aimerais comparer ces 2 fichiers, connaitre les différences "les noms en trop comparer à l'autre fichiers".
avez vous une solution, j'ai deja essayé "diff" mais j'ai peur qu'il compare ligne par ligne car les noms sont mélangés, c'est à dire :

fichier 1 fichier 2
toto tata
tata popo
titi titi

merci d'avance
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Message par chipster »

Le topic ^^ :merci:
djaac
Daikyu
Messages : 68
Inscription : mar. 23 janv. 2007, 19:22

comparer 2 fichiers

Message par djaac »

je dois le prendre comment ?
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

Je te suggère de jeter un œil sur http://www.linux-france.org/article/deb ... linux.html

TU peux commencer par trier tes fichiers aussi !
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
djaac
Daikyu
Messages : 68
Inscription : mar. 23 janv. 2007, 19:22

Message par djaac »

ok,
ça m'aide pas à grand chose, mais bon j'ai compris !
merci pour votre collaboration.
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

Tu peux aussi lire http://www.siteduzero.com/tutoriel-3-56 ... nnees.html

Compte-tenu du peu d'information que tu nous donnes sur ce que tu veux faire, on voit pas forcément comment t'aider. Tu n'est d'ailleurs pas obligé de comparer les fichier directement, mais tu peux comparer des copies. Enfin, bref, passons !

En ce qui concerne le sujet du fil de messages, il aurait été sympa que tu le mettes sous la forme [SUJET] Question (État) en n'indiquant État que si c'est résolu !
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
youshe
Hankyu
Messages : 40
Inscription : sam. 30 août 2008, 22:38

Message par youshe »

chipster a écrit :Le topic ^^ :merci:
Cela veut simplement dire que la section du forum est dédiée à l'installation et à la configuration d'archlinux et/ou que le topic du post n'est pas convenable :).
En ce qui concerne les fichiers, il est effectivement fort possible que diff renvoie quelque chose de pas très en accord avec ce qui est recherché dans ce cas là. Une solution serait peut être de faire un tri préalable ? (cf. sort et sed par exemple)
Voir un ptit script bash/python/perl ou ruby si tu le veux vraiment ?

Fred
djaac
Daikyu
Messages : 68
Inscription : mar. 23 janv. 2007, 19:22

comparer 2 fichiers

Message par djaac »

désolé,

uniq est pas mal mais comparer 2 fichiers devient compliquer pour lui.Pour faire simple dans mon explication :
-j'ai 2 fichiers differents avec des noms de machines à l'interieur
-je veux extraire les doublons pour ces 2 fichiers

si doublons, machine existante sinon inexistante

merci
Avatar de l’utilisateur
marc[i1]
Maître du Kyudo
Messages : 1753
Inscription : ven. 27 oct. 2006, 10:48
Localisation : Nantes (44)

Message par marc[i1] »

Salut,

de ce que tu décris, le duo diff + sed me semble le plus évident.

exemple :
diff sur deux fichiers
sed pour trouver un paramètre "machine"
si présent : ok
si pas présent : pas ok
Ne vous emmerdez plus, emmerdez les autres.
djaac
Daikyu
Messages : 68
Inscription : mar. 23 janv. 2007, 19:22

Message par djaac »

merci,
par contre j'ai identifié 350 machines par fichiers...
youshe
Hankyu
Messages : 40
Inscription : sam. 30 août 2008, 22:38

Message par youshe »

Sinon une solution un peu barbare pourrait être :
cat f1 | sort > f1.bis
cat f2 | sort > f2.bis
diff *.bis
Toutes les machines précédées par + et - sont à éliminer. Il doit être possible de faire plus simple avec sed comme dit plus haut mais je ne maîtrise pas du tout :)

Fred
djaac
Daikyu
Messages : 68
Inscription : mar. 23 janv. 2007, 19:22

Message par djaac »

quand tu dis éliminer,
c'est à dire qu'elles n'existent pas dans les deux fichiers

(car la condition, c'est de faire ressortir les machines du fichier1 qui n'existent pas dans le fichier2)
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Re: comparer 2 fichiers

Message par vincentxavier »

djaac a écrit :désolé,

uniq est pas mal mais comparer 2 fichiers devient compliquer pour lui.Pour faire simple dans mon explication :
-j'ai 2 fichiers differents avec des noms de machines à l'interieur
-je veux extraire les doublons pour ces 2 fichiers

si doublons, machine existante sinon inexistante

merci
Tu concatènes tes deux fichiers, puis tu appliques un uniq dessus qui te donnera la liste des doublons (donc des machines existantes).
Si ton fichier contient d'autres informations, tu peux utiliser cut ou awk pour te débarrasser des informations "inutiles" dans les fichiers de départ :

Code : Tout sélectionner

awk -F ' ' '{print $1}' fichier > fichier_machine
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

youshe a écrit :Sinon une solution un peu barbare pourrait être :

Code : Tout sélectionner

cat f1 | sort > f1.bis
cat f2 | sort > f2.bis
diff *.bis
Fred
Ahhhhhhhhh, encore du UUOC (Useless Use Of Cat) ! Je signale que

Code : Tout sélectionner

sort f1 -o f1.sort
est tout aussi élégant, efficace et bien plus portable !
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
djaac
Daikyu
Messages : 68
Inscription : mar. 23 janv. 2007, 19:22

Message par djaac »

je veux faire ressortir les machines du fichier1 qui n'existent pas dans le fichiers2
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

Dans ce cas, tu tries tes fichiers, tu retires les doublons, et tu fais un diff entre les deux.

Regarde un peu la page de diff, tu y verras comment n'y faire apparaitre que certaines informations.
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

Je pense que le meilleur outil reste "comm" qui permet de comparer deux fichiers et de sortir les lignes communes ou encore les doublons selon les options 8)

Code : Tout sélectionner

comm --help
Usage: comm [OPTION]... FICHIER1  FICHIER2
Comparer les fichiers triés GAUCHE et DROITE ligne par ligne.

Sans option, la sortie se fait sur 3 colonnes.  La première colonne contient
les lignes uniques au FICHIER1, la seconde contient les lignes uniques au FICHIER2,
et la troisième contient les lignes communes aux deux fichiers.

  -1              supprimer les lignes uniques du fichier de gauche
  -2              supprimer les lignes uniques du fichier de droite
  -3              supprimer les lignes uniques des 2 fichiers
youshe
Hankyu
Messages : 40
Inscription : sam. 30 août 2008, 22:38

Message par youshe »

Ahhhhhhhhh, encore du UUOC (Useless Use Of Cat) ! Je signale que
J'aurais pas lu vincentxavier, j'aurais cru à un gcarrier. Ca doit être archlinux qui pousse à ce genre de réflexions, j'adore :)
est tout aussi élégant, efficace et bien plus portable
Pas faux, je le saurai maintenant :)

Sinon, un sort sur les deux fichiers puis un :

Code : Tout sélectionner

diff f1.new f2.new | grep '<'
devrait donner quelque chose de bien non ?

Fred
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

Sauf que l'idée de Maître wain me semble plus pertinente !
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
djaac
Daikyu
Messages : 68
Inscription : mar. 23 janv. 2007, 19:22

comparer 2 fichiers [RESOLU]

Message par djaac »

merci bcp à tous
Répondre