Pages : 1
#1 Le 07/06/2020, à 18:53
- Lsy
[Résolu] Les REGEX
Bonjour,
J'ai fais egrep sur la sortie standard de ifconfig pour juste afficher que les adresses Ip de type w.x.y.z ( dont w et x représentent 3 chiffres et y et z peuvent représenter 1 ou 2 ou 3 chiffres). exemple: 192.168.1.55 ou 192.168.22.55
zan@hp:~$ ifconfig | egrep '[0-9]{3}\.[0-9]{3}\.[0-9]{,3}\.[0-9]{,3}'
inet 192.168.43.253 netmask 255.255.255.0 broadcast 192.168.43.255
zan@hp:~$
Mon problème ici, c'est la longueur du motif.
Je voudrais si possible, le reécrire plus court
J'ai tenté en le reécrivant avec les parenthèses comme ceci:
zan@hp:~$ ifconfig | egrep '([0-9]\.){3}\.([0-9]\.){,3}'
zan@hp:~$
Aucune sortie, même pas de sortie d'erreur
Je vous prie de m'aider
Dernière modification par Lsy (Le 14/06/2020, à 12:38)
« La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information. » (Albert Einstein).
Hors ligne
#2 Le 07/06/2020, à 19:02
- pingouinux
Re : [Résolu] Les REGEX
Bonjour,
Ceci ?
ifconfig | egrep '([0-9]{3}\.){2}([0-9]{,3}\.?){2}'
Hors ligne
#3 Le 07/06/2020, à 19:12
- nany
Re : [Résolu] Les REGEX
Bonjour,
La commande « ifconfig » n'a pas été trouvée
Eh oui, la commande ifconfig est obsolète. De même que la commande egrep est dépréciée.
Donc :
ip address | grep -E '([0-9]{3}\.){2}([0-9]{,3}\.?){2}'
En ligne
#4 Le 07/06/2020, à 19:27
- MicP
Re : [Résolu] Les REGEX
Bonjour
ou alors :
hostname -I | awk '{print $1}'
Dernière modification par MicP (Le 07/06/2020, à 19:29)
Hors ligne
#5 Le 07/06/2020, à 20:39
- diesel
Re : [Résolu] Les REGEX
Ou même
hostname -I
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#6 Le 07/06/2020, à 20:51
- nany
Re : [Résolu] Les REGEX
~$ hostname -I
192.168.x.xx xxxx:xxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx xxxx:xxx:xxx:xxxx:xxxx:xxxx:xxx:xxxx
En ligne
#7 Le 07/06/2020, à 21:27
- MicP
Re : [Résolu] Les REGEX
On a aussi, avec bash
sans utiliser ni grep ni awk :
michel@debT450:~$ [[ $(ip a) =~ inet\ ([^/]*)/[0-9]{2}\ brd ]] && printf '%s\n' ${BASH_REMATCH[1]}
192.168.0.18
michel@debT450:~$
ou bien :
michel@debT450:~$ [[ $(hostname -I) =~ ([^ ]*) ]] && printf '%s\n' ${BASH_REMATCH[1]}
192.168.0.18
michel@debT450:~$
Dernière modification par MicP (Le 07/06/2020, à 21:34)
Hors ligne
#8 Le 07/06/2020, à 22:05
- Watael
Re : [Résolu] Les REGEX
je n'ai pas dit que hostname -I est une liste ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#9 Le 07/06/2020, à 22:39
- MicP
Re : [Résolu] Les REGEX
Désolé, c'est vrai que tu me l'avais déjà dit => "I must punish myself" (How to irritate people - indian restaurant)
Il me faudrait pratiquer plus souvent pour pouvoir assimiler.
listIPs=( $(hostname -I) )
echo ${listIPs[0]}
Dernière modification par MicP (Le 07/06/2020, à 23:17)
Hors ligne
#10 Le 08/06/2020, à 07:58
- diesel
Re : [Résolu] Les REGEX
~$ hostname -I 192.168.x.xx xxxx:xxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx xxxx:xxx:xxx:xxxx:xxxx:xxxx:xxx:xxxx
jean-marie@jean-marie:~$ hostname -I
192.168.10.2
jean-marie@jean-marie:~$
??????????????????
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#11 Le 08/06/2020, à 09:48
- bruno
Re : [Résolu] Les REGEX
@diesel : normal si ta machine n'a qu'une seule interface réseau avec une seule adresse IPv4. Une interface réseau peut avoir plusieurs adresses IPv4 et plusieurs IPv6 et une machine peut avoir plusieurs interfaces réseau.
La page de man de hostname dit que l'option -I affiche toutes les adresses IP de l'hôte à l'exclusion de l'interface de bouclage et du lien local IPv6.
#12 Le 14/06/2020, à 12:16
- Lsy
Re : [Résolu] Les REGEX
Bonjour,
Merci à tous pour vos réponses aussi pertinentes les unes que les autres.
Cependant je rappelle que mon objectif était de trouver, si possible, une expression plus court que celle que j'avais écrite dans mon premier message dans l'utilisation des REGEX avec la commande egrep sur la stdout de ifconfig pour trouver les adresses telles que j'avais définies.
Bonjour,
Ceci ?ifconfig | egrep '([0-9]{3}\.){2}([0-9]{,3}\.?){2}'
Cette réponse, même si elle n'est pas aussi courte, satisfait ma préoccupation dans l'utilisation des REGEX
Merci à pingouinux pour cette réponse.
« La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information. » (Albert Einstein).
Hors ligne
#13 Le 14/06/2020, à 13:50
- Watael
Re : [Résolu] Les REGEX
ifconfig est en désuétude, comme l'a déjà suggéré nany.
cette courte regex ne fonctionnera sans doute plus quand ifconfig sera définitivement abandonné.
de plus, la regex ne couvre pas toutes les possibilités d'adresses IP.
par exemple, elle n'indiquera pas de correspondance avec 10.0.0.1
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#14 Le 17/06/2020, à 01:59
- sputnick
Re : [Résolu] Les REGEX
Plutot que 'ifconfig'; préférer 'ip'. (Comme vu plutôt, 'ifconfig' est déprécié).
Et pour utiliser des regex vraiment éprouvées, utiliser perl et le module Net::IPv4 (paquet 'libregexp-common-perl', sûrement déjà installé) :
ip -br a | perl -MRegexp::Common -lne 'print $& if /($RE{net}{IPv4})/'
Ou bien:
hostname -I | perl -MRegexp::Common -lne 'print $& if /($RE{net}{IPv4})/'
Bien sur, on peut 'matcher' des IPv6 à la place si on veut
Dernière modification par sputnick (Le 17/06/2020, à 02:04)
Il existe un tunnel obscur dans la lumière infinie. Lao-Tseu
https://sputnick.fr
Hors ligne
Pages : 1