Supprimer une partie d'un hostname avec SED

Résolu
s_0ra Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
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 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
en bash
$ var="partie1.partie2.partie3"
$ echo ${var#*.}
partie2.partie3
$
2
aurelazy Messages postés 190 Date d'inscription   Statut Membre Dernière intervention   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 5 Date d'inscription   Statut Membre Dernière intervention   1
 
ça fonctionne :) Merci beaucoup !
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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 5 Date d'inscription   Statut Membre Dernière intervention   1
 
Oups, en effet !
Merci pour cette réponse complète, ça me laisse le choix ! :)
0
s_0ra Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   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