Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1413 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  utilisation de diff sous unix

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

utilisation de diff sous unix

n°1579770
deck10
Posté le 27-06-2007 à 10:22:40  profilanswer
 

Bonjour,
pour comparer deux fichiers, j'utilise la commande diff mais je voudrai qu'elle ne prenne pas en compte le numero de ligne (si c'est possible).
 
Voici un exemple:
fic1         fic2
aaaaa     aaaaa
bbbbb     ccccc
ccccc     ddddd
ddddd     bbbbb
 
quand je fais diff fic1 fic2, je voudrai qu'il me retourne que les fichiers sont identiques.
Je n'ai trouvé comment faire. J'espere que c'est réalisable.
 
Merci.
deck10

mood
Publicité
Posté le 27-06-2007 à 10:22:40  profilanswer
 

n°1579776
masklinn
í dag viðrar vel til loftárása
Posté le 27-06-2007 à 10:27:21  profilanswer
 

deck10 a écrit :

je voudrai qu'il me retourne que les fichiers sont identiques.


Ils ne le sont pas au sens de diff, si tu veux une horreur pareille il faut te faire un script helper qui va créer toutes les permuations possibles du second fichier et les differ une à une avec le premier fichier (amuse toi bien)

 

(et diff ne prend pas en compte "les numéros de lignes", il fait simplement du matching de sous-séquences en sommet-fond ligne à ligne)


Message édité par masklinn le 27-06-2007 à 10:28:34

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1579784
deck10
Posté le 27-06-2007 à 10:38:23  profilanswer
 

ok.
Sinon, je viens de penser à un truc. Vu que je ne peux pas connaître l'ordre des mots, j'ai pensé à trier les 2 fichiers par ordre alphabétique et les comparer après.
 
Savez s'il existe une commande pour trier un fichier et le remettre en ordre alphabétique?

n°1579786
masklinn
í dag viðrar vel til loftárása
Posté le 27-06-2007 à 10:39:15  profilanswer
 

man sort


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1579788
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-06-2007 à 10:41:07  profilanswer
 

Si tu peux passer par des fichiers temporaires, tu peux essayer un truc dans le genre:

Code :
  1. cat fic1 | sort  > temp1
  2. cat fic2 | sort  > temp2
  3. diff temp1 temp2
 

edit: [:benou_grilled] over grilled

Message cité 1 fois
Message édité par anapajari le 27-06-2007 à 10:41:54
n°1579792
deck10
Posté le 27-06-2007 à 10:50:37  profilanswer
 

merci

n°1579795
masklinn
í dag viðrar vel til loftárása
Posté le 27-06-2007 à 10:55:26  profilanswer
 

anapajari a écrit :

Si tu peux passer par des fichiers temporaires, tu peux essayer un truc dans le genre:

Code :
  1. cat fic1 | sort  > temp1
  2. cat fic2 | sort  > temp2
  3. diff temp1 temp2
 

edit: [:benou_grilled] over grilled


sort f2 > temp
sort f1 | diff - temp


Je suis sûr qu'il y a un meilleur moyen de le faire sans fichiers temporaires, mais j'arrive pas à le trouver [:sisicaivrai]


Message édité par masklinn le 27-06-2007 à 10:55:52

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1579810
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-06-2007 à 11:22:13  profilanswer
 

Code :
  1. perl -e 'my $a =`sort fic1`; my $b =`sort fic2`; if ( $a ne $b){ print "fichiers différents\n";}else{print "fichiers identiques\n";}'


[:dawak]

Message cité 1 fois
Message édité par anapajari le 27-06-2007 à 11:22:30
n°1579816
masklinn
í dag viðrar vel til loftárása
Posté le 27-06-2007 à 11:27:49  profilanswer
 

anapajari a écrit :

Code :
  1. perl -e 'my $a =`sort fic1`; my $b =`sort fic2`; if ( $a ne $b){ print "fichiers différents\n";}else{print "fichiers identiques\n";}'


[:dawak]


J'ai parlé d'un meilleur moyen, pas d'une espèce d'imondice


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1579819
deck10
Posté le 27-06-2007 à 11:29:48  profilanswer
 

mais avec ce code, tu n'as pas la différence entre les fichiers.
 
Pour ne pas avoir de fichier tmp, je fais sort f1 | sort > f1

mood
Publicité
Posté le 27-06-2007 à 11:29:48  profilanswer
 

n°1579828
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-06-2007 à 11:38:51  profilanswer
 

masklinn a écrit :

J'ai parlé d'un meilleur moyen, pas d'une espèce d'imondice


rooh ça va je deconnais

deck10 a écrit :

Pour ne pas avoir de fichier tmp, je fais sort f1 | sort > f1


ou alors man sort et

Code :
  1. sort f1 -o f1


 

n°1579858
matafan
Posté le 27-06-2007 à 12:24:39  profilanswer
 

deck10 a écrit :

Pour ne pas avoir de fichier tmp, je fais sort f1 | sort > f1


Si ça marche, c'est seulement par hasard. Essaie avec un fichier plus gros, et tu verra que dans certains cas tu te retrouvera avec un fichier f1 vide. On ne peut jamais écrire dans un fichier qu'on est en train de lire, sauf si la commande est faite spécialement pour ça (genre le flag -i de sed ou perl).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  utilisation de diff sous unix

 

Sujets relatifs
[Résolu] utilisation d'une fonction d'un autre classeur.UNIX, serveur multiconnexion(thread) pour tchat
module LDAP sous unixprogrammer sous unix
[C#] Utilisation des propriétésAide pour utilisation de jain-sip
Demande d'aide pour utilisation gawkProbleme d'utilisation de l'API C de mysql sous linux
Utilisation d'une fonction..Utilisation d'instance de classe.
Plus de sujets relatifs à : utilisation de diff sous unix


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR