Bonjour,
Tout d'abord, désolé de vous embêter, je ne suis vraiment pas bon en script.
Voici mon problème :
J'ai un fichier qui s'appelle ipdure.txt avec les données suivante :
lease 172.17.111.169 {
starts 3 2015/11/04 13:44:14 UTC;
ends 4 2015/11/05 01:44:14 UTC;
hardware ethernet 00:08:5d:44:63:ad;
uid 01:00:08:5d:44:63:ad;
client-hostname "6867i00085D4463AD";
}
lease 172.17.114.1 {
starts 2 2015/10/06 13:07:13 UTC;
ends 3 2015/10/07 01:07:13 UTC;
hardware ethernet 00:08:5d:44:d8:8e;
uid 01:00:08:5d:44:d8:8e;
client-hostname "6867i00085D44D88E";
}
lease 172.17.113.1 {
starts 1 2015/10/19 13:31:00 UTC;
ends 2 2015/10/20 01:31:00 UTC;
hardware ethernet 00:08:5d:44:d8:91;
uid 01:00:08:5d:44:d8:91;
client-hostname "6867i00085D44D891";
}
Ce que je souhaite c'est de savoir pour telle plage IP quelle est le nombre d'IP restant à l'instant X.
Ce que je comptais faire c'est de garder les IPs et la date de fin de réservation, puis comparer pour chaque ligne la date de fin et la date actuelle, si celle-ci est dépassé alors je la supprime, sinon je la garde et s'il y a un doublon d'IP je garde le plus récent.
Donc j'ai commencé avec la commande suivante :
more dhcpd.leases | egrep -e "lease|ends" >ipdure.txt
ce qui me donne les données dans le format suivant :
lease 172.17.111.169 {
ends 4 2015/11/05 01:44:14 UTC;
lease 172.17.114.1 {
ends 3 2015/10/07 01:07:13 UTC;
lease 172.17.113.1 {
ends 2 2015/10/20 01:31:00 UTC;
Et la je suis bloqué, je n'arrive pas à dire que pour chaque ligne finissant par le caractère { alors tu supprimes le retour à la ligne (\n), je pensais que la commande suivante fonctionnerais, mais vu que ça ne fonctionne pas je pense ne pas avoir compris encore le fonctionnement des regex :
sed '/\{^$/\n/d' ipdure.txt
Alors plusieurs questions :
1) Peut-être que je m'y prends mal, si vous avez une meilleur idée pour le faire je suis preneur 
2) Connaissez-vous un bon site pour apprendre les regex?
3) Si vous voyez mon erreur pour le saut de ligne je suis aussi preneur 
Voila, encore désolé de mon amateurisme dans les regex :s
Partager