Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
comparaison.
Envoyé par: Jm

Slt tout le monde.
Pas doué en prog mais alors pas du tout, j'aimerais néanmoins faire un script de comparaison entre deux fichiers... peut etre avec un diff ou qqchose comme ça.
Seulement comme je l'ai dit c'est pas mon fort.

Alors voilà ce que j'aimerais:
La comparaison entre les lignes numéro n de deux fichiers distincts.
Comment je peux faire ça svp ?

Merci



Jmy

Poste le Friday 20 August 2004 08:39:40
Répondre     Citer    
Re: comparaison.
Envoyé par: irulan

Salut,

pour ma part je sais le faire en C, je sais pas si ça peut t'aider mais voilà.

En C :
D'abord tu ouvre le fichier en lecture avec fopen (man fopen).
Ensuite tu utilise la fonction fgets, qui s'arrête à la fin de la ligne ("\n", si je ne me trompe pas), il suffit de faire une boucle avec le fgets jusqu'à la ligne désirée.(man fgets)
N'oublis pas de refermer le fichier avec fclose(man fclose)

voilà un site pour les man au besoin :
[www.linux-kheops.com]

En espérant que ça t'aide :-)

Poste le Friday 20 August 2004 09:00:31
Répondre     Citer    
Re: comparaison.
Envoyé par: Jm

ok je jete un coup d'oeil, merci !



Jmy

Poste le Friday 20 August 2004 09:05:22
Répondre     Citer    
Re: comparaison.
Envoyé par: arltrick

Salut,

tu extrais la ligne que tu veux de tes fichiers avec awk, en la mettant dans un fichier temporaire. Ensuite tu compare ces deux fichiers avec diff.

Ou bien tu exttrait les deux lignes avec awk puis tu testes leurs egalites.

cdt

Poste le Friday 20 August 2004 09:36:21
Répondre     Citer    
Re: comparaison.
Envoyé par: Jm

en fait j'ai fait un grep de chaque fichier que j'ai redirigé dans d'autre ...
ensuite j'ai fait un diff entre les deux .

diff fichier1 fichier 2

ce que j'aimerais c'est faire :
Si diff
Alors cmd 1
sinon
cmd 2

c'est ça que je n'arrive pas à écrire ...

merci du coup de main



Jmy

Poste le Friday 20 August 2004 09:42:42
Répondre     Citer    
Re: comparaison.
Envoyé par: tuxfanch

alors moi je dis:
pouet.py--------------------------------------------------------
#!/usr/bin/env python
import sys

F1 = open(sys.argv[1],'r')
F2 = open(sys.argv[2],'r')

fic1 = F1.readlines()
fic2 = F2.readlines()

if fic1[sys.argv[3] - 1] != fic2[sys.argv[3] - 1] :
#tes traitements si c pas pareil ...
else :
#tes traitements si c pareil
---------------------------------------------------------pouet.py

et après avoir rendu le fichier exécutable :
./pouet.py fichier1 fichier2 NumDeLaLigne


l'utilisation de awk me parait la meilleure solution si tu n'as quasi aucun traitement derrière, sinon : python ! (ou Perl, question de gout ;-) )

le python c'est bon, mangez en !


Poste le Friday 20 August 2004 12:30:47
Répondre     Citer    
Re: comparaison.
Envoyé par: tuxfanch

ooooooops ....
dans pouet.py faut quand même rajouter à la fin :

F1.close()
F2.close()

quel bourriquot !


Poste le Friday 20 August 2004 12:32:20
Répondre     Citer    
Re: comparaison.
Envoyé par: Jm

j'ai finalement réussit autrement et sans me plonger véritablement dans la prog, dieu merci ;o)

Merci pour le coup de pouce à tout le monde.

#!/bin/sh

/bin/grep Word1 text1 > ppp1 # Word 1 pq je sais qu'il est à la bonne ligne ;o)
/bin/grep Word1 test2 > ppp2

diff ppp1 ppp2 > diff1
if [ -s diff1 ]
then
echo "pas de difference"
else
echo "changement"
fi

rm /f1 /ppp1 /ppp2 /diff1


Merci



Jmy

Poste le Friday 20 August 2004 14:03:56
Répondre     Citer    
Re: comparaison.
Envoyé par: Sve@r

Tu fais une minuscule erreur finale : les fichiers "f1", "ppp1", "ppp2" et "diff1" ne sont pas dans le répertoire "/" (à moins que tu y sois toi-même quand tu lances le script !!!)

Ce n'est pas "rm /f1 /ppp1 /ppp2 /diff1" qu'il faut écrire mais
"rm f1 ppp1 ppp2 diff1"

De plus, d'où il vient "f1" ???



L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Friday 20 August 2004 20:22:04
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
comparaison.
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons