Supprimer une partie d'un hostname avec SED

Résolu
s_0ra Messages postés 7 Statut Membre -  
dubcek Messages postés 19021 Statut Contributeur -
Bonjour,

J'ai trouvé plusieurs sujets là dessus, mais je n'ai pas réussi à trouver une solution.
J'ai un peu de mal à utiliser SED, mais il me semble avoir déjà trouvé un début de solution.

En entrée j'ai un hostname du type "partie1.partie2.partie3".

J'aimerais récupérer uniquement ce qui se trouve après le premier point, et ce même si le hostname ne comporte que deux parties (partie1.partie2) ou même plus (partie1.partie2.partie3.partie4).

Actuellement, avec
echo "partie1.partie2.partie3" | sed "s/.*\.//"
il me renvoie uniquement "partie3"

Donc SED m'efface tout ce qu'il y a avant le dernier point, le point compris.
J'aimerais qu'il fasse la même chose, mais avec le premier point, pas le dernier, de façon à obtenir "partie2.partie3".

Merci d'avance pour votre aide.
A voir également:

4 réponses

dubcek Messages postés 19021 Statut Contributeur 5 637
 
hello
en bash
$ var="partie1.partie2.partie3"
$ echo ${var#*.}
partie2.partie3
$
2
aurelazy Messages postés 197 Statut Membre 50
 
Salur s_Ora,

Voila une solution que j'ai trouvé,
sed "s/^\([a-zA-Z1-9]*\)\.\(.*\)$/\2/"
et la tu recuperes tout ce qui se trouve apres ton premier "."
1
s_0ra Messages postés 7 Statut Membre 1
 
ça fonctionne :) Merci beaucoup !
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Salut,

Dans ta solution le
grep
ne sert à rien ;-(

$ echo "partie1.partie2.partie3" | cut -d "." -f2-
partie2.partie3

Si tu veux une solution juste avec
grep
:
$ echo "partie1.partie2.partie3" | grep -Po "[^.]*.\K.*"
partie2.partie3
Ou juste avec
sed
:
$ echo "partie1.partie2.partie3" | sed 's/[^.]*.//'
partie2.partie3
1
s_0ra Messages postés 7 Statut Membre 1
 
Oups, en effet !
Merci pour cette réponse complète, ça me laisse le choix ! :)
0
s_0ra Messages postés 7 Statut Membre 1
 
Finalement, j'ai trouvé moi même la solution avec une autre commande, elle est plus simple et je la comprends mieux !

echo "partie1.partie2.partie3" | grep . | cut -d "." -f2-
0