#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
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
Hors ligne