Supprimer une partie d'un hostname avec SED

Résolu
s_0ra Messages postés 7 Statut Membre -  
dubcek Messages postés 18627 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.

4 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    en bash
    $ var="partie1.partie2.partie3"
    $ echo ${var#*.}
    partie2.partie3
    $
    2
  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
    1. s_0ra Messages postés 7 Statut Membre 1
       
      ça fonctionne :) Merci beaucoup !
      0
  3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
    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
  4. 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