Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr (premières livraisons mi-mai)

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

M.A.J. en cours du forum possibilité de bug, nous faisons le maximum pour les résoudre au plus vite

#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