Commande qui permet de récupérer uniquement l'adresse IP de la commande ip a.
$ ip -4 addr show ens33 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
grep : Commande Unix qui permet de rechercher une chaîne de caractères dans un fichier ou une sortie standard (comme ici via un pipe).
-o : Option pour afficher seulement la partie de la ligne qui correspond à l'expression régulière (et pas la ligne entière).
-P : Utilise la syntaxe des expressions régulières Perl (plus puissante que la syntaxe POSIX classique). Elle permet notamment d’utiliser des fonctionnalités comme les "lookbehind".
- (?<=inet\s) :
* C’est un lookbehind positif. Cela signifie :
* Trouve une correspondance qui est précédée de inet (le mot 'inet' suivi d’un espace), sans inclure inet dans la sortie.
* Donc, on commence à capturer après inet.
- \d+ :
* \d : représente un chiffre (0 à 9).
* + : signifie un ou plusieurs chiffres.
* Donc, \d+ capte un nombre entier (ex. : 192).
- (\.\d+){3} :
* \. : le point littéral (le . doit être échappé car il a une signification spéciale en regex).
* \d+ : encore un ou plusieurs chiffres.
* (\.\d+){3} : cette structure répète trois fois "un point suivi d’un ou plusieurs chiffres".
* Exemples correspondants : .168, .1, .42
Résultat global :
- L’ensemble \d+(\.\d+){3} capte une adresse IP comme 192.168.1.42.
- Et grâce au lookbehind (?<=inet\s), on s'assure qu’on ne capte que les adresses IPv4 listées après inet (et non pas inet6 par exemple).