Compter parmis liste d'IP
Résolu
Bonjour,
voilà j'ai un fichier texte qui comporte une liste d'adresses IP,
ce sont les connexions enregistrées, cependant, la même IP peut se répéter (si elle s'est connecté plusieurs fois).
Je voudrais connaître le nombre total d'IP qui s'est connecté (donc qui se trouve dans mon fichier) sans compter les doubles.
Comment puis-je réaliser un script qui exécute ce compte ?
Je sais qu'il faut utiliser grep, mais comment faire pour ne compter qu'une seule fois les IP qui s'y trouvent plusieurs fois ?
Merci de vos réponses, bonne journée.
voilà j'ai un fichier texte qui comporte une liste d'adresses IP,
ce sont les connexions enregistrées, cependant, la même IP peut se répéter (si elle s'est connecté plusieurs fois).
Je voudrais connaître le nombre total d'IP qui s'est connecté (donc qui se trouve dans mon fichier) sans compter les doubles.
Comment puis-je réaliser un script qui exécute ce compte ?
Je sais qu'il faut utiliser grep, mais comment faire pour ne compter qu'une seule fois les IP qui s'y trouvent plusieurs fois ?
Merci de vos réponses, bonne journée.
A voir également:
- Compter parmis liste d'IP
- Ethernet n'a pas de configuration ip valide - Guide
- Liste déroulante excel - Guide
- Télévision ip - Guide
- Comment connaître son adresse ip - Guide
- Liste déroulante en cascade - Guide
1 réponse
Un truc dans ce genre devrait faire l'affaire :
Exemple : (qui permettra d'expliquer la commande)
Le "sort" est nécessaire car "uniq" ne supprime que les répétitions consécutives. Note que si plusieurs IP sont sur la même ligne, ça continue à marcher car "egrep -o" écrira une IP par ligne.
Bonne chance
egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt | sort | uniq | wc -l
Exemple : (qui permettra d'expliquer la commande)
(mando@aldur) (~) $ cat toto.txt 192.168.1.1 coucou1 coucou2 192.168.1.2 coucou3 192.168.1.1 coucou3 (mando@aldur) (~) $ egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt 192.168.1.1 192.168.1.2 192.168.1.1 (mando@aldur) (~) $ egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt | uniq 192.168.1.1 192.168.1.2 192.168.1.1 (mando@aldur) (~) $ egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt | sort | uniq 192.168.1.1 192.168.1.2 (mando@aldur) (~) $ egrep -o "[0-9]{1,3}([.][0-9]{1,3}){3}" toto.txt | sort | uniq | wc -l 2
Le "sort" est nécessaire car "uniq" ne supprime que les répétitions consécutives. Note que si plusieurs IP sont sur la même ligne, ça continue à marcher car "egrep -o" écrira une IP par ligne.
Bonne chance