Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 18/05/2010, à 14: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, à 16:19)

Hors ligne

#2 Le 18/05/2010, à 15: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, à 15: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, à 15: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, à 16: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

Haut de page ↑