Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/05/2010, à 13:23

auguste57

[Resolu] Difference entre fichiers

Bonjour,

Je dispose de 2 fichiers

fichier1.log :                                                            fichier2.log
 
********                                                                 192.168.0.1 --- PC01
* TEST*                                                                  192.168.0.2 --- PC02
********                                                                 192.168.0.3 --- PC03
                                                                         192.168.0.4 --- PC04
Machines OK :                                                            192.168.0.5 --- PC05

192.168.0.1
192.168.0.2
192.168.0.5

Machines pas OK :

192.168.0.3
192.168.0.4

J'ai donc réussi à mettre les adresses IP dans un fichier, en y joignant derriere le nom du PC (grâce à awk)
Comment remplacer les adresses IP du fichier 2 par celle du fichier 1 ?
J'aimerais donc avoir un fichier3.log de cette forme :


fichier3.log :                                                         
 
********                                                                  
* TEST*                                                                 
********                                                                  
                                                                              
Machines OK :                                                     

192.168.0.1 --- PC01
192.168.0.2 --- PC02
192.168.0.5 --- PC05

Machines pas OK :

192.168.0.3 --- PC03
192.168.0.4 --- PC04

J'ai tenté de faire une difference, sans succès ! Et je ne vois pas comment faire dans une boucle

while read ligne
do     ....
   if [ ...]; then
    ...
   fi
done <...

car je dispose de 2 fichiers, et là je ne peux en ouvrir qu'un !
Il faut savoir que je dispose également de fichiers différents qui listent les IP des machines OK, et machines pas OK !

Merci smile

Dernière modification par auguste57 (Le 18/05/2010, à 15:19)

Hors ligne

#2 Le 18/05/2010, à 14:35

credenhill

Re : [Resolu] Difference entre fichiers

hello

$ awk '/---/ {x[$1]=$0;next};{if(x[$1])print x[$1] ; else print}' fichier2.log fichier1.log
********
* TEST*
********

Machines OK :

192.168.0.1 --- PC01
192.168.0.2 --- PC02
192.168.0.5 --- PC05

Machines pas OK :

192.168.0.3 --- PC03
192.168.0.4 --- PC04
$

Hors ligne

#3 Le 18/05/2010, à 14:45

troisseize

Re : [Resolu] Difference entre fichiers

Salut auguste57,

Ça peut très certainement en Bash sed, uniq, sort, cut tr et autres commandes mais je ne serai pas assez à l'aise avec tout ça pour le faire facilement...

On peut également le faire avec un langage de programmation à part entière (C,Python,Perl,Java...). Personnellement, utilisant Python je peux proposer ce script:

#!/usr/bin/env python

f2 = open('fichier2.log')

ip_name = {}
for line in f2:
    ip,name = line.split('---')
    ip_name[ip.strip()] = name.strip()

f2.close()

f1 = open('fichier1.log')
f3 = open('fichier3.log','w')

for line in f1:
    string = line.strip() 
    if string in ip_name:
        f3.write(' --- '.join((string,ip_name[string])) + '\n')
    else:
        f3.write(line)

f3.close()
f1.close()

en espérant que ça aide...

Hors ligne

#4 Le 18/05/2010, à 14:47

troisseize

Re : [Resolu] Difference entre fichiers

je viens de voir le post 2... wahou j'avais oublié la puissance du awk (je ne m'y suis jamais vraiment mis)

Hors ligne

#5 Le 18/05/2010, à 15:19

auguste57

Re : [Resolu] Difference entre fichiers

Je ne peux que tous vous remercier...
Pour toutes mes questions, j'ai toujours les bonnes réponses, et c'est toujours rapide ....

Merci beaucoup smile

Hors ligne