# Extraire la partie principale d'un nom de domaine avec sed

**URL:** <https://www.debian-fr.org/t/extraire-la-partie-principale-dun-nom-de-domaine-avec-sed/69921>\
**Category:** Programmation\
**Created:** [Juin 8, 2016, 11:30 UTC](https://www.debian-fr.org/t/extraire-la-partie-principale-dun-nom-de-domaine-avec-sed/69921 "2016-06-08T11:30:40Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Esprit](https://www.debian-fr.org/user_avatar/www.debian-fr.org/esprit/32/5917_2.png) [@Esprit](https://www.debian-fr.org/u/Esprit)\
**Post date:** [Juin 8, 2016, 11:30 UTC](https://www.debian-fr.org/t/extraire-la-partie-principale-dun-nom-de-domaine-avec-sed/69921/1 "2016-06-08T11:30:40Z")

</div>

Bonjour,

Je cherche à isoler la partie principale de plusieurs noms de domaine.

```
http://montest.be/
https://www.autretest.com/blabla
www.art.be
test.fr

```

Je voudrais récupérer :

```
montest
autretest
art
test

```

J’ai réussis à obtenir quelque chose qui marche mais ça ne me semble pas très “propre”…

```
$ cat domaines.txt 
http://montest.be/
https://www.montest.be
http://monautretest.com/blabla
test.fr
$ cat domaines.txt | sed -e "s/http\:\/\///" -e "s/https\:\/\///" -e "s/www\.//" -e "s/\..*//"
montest
montest
monautretest
test

```

Est-il possible de faire la même chose plus élégamment ? 🙂

[Edit: j’ai réussis à concaténer http et https :

```
$ cat domaines.txt | sed -e "s/\(http\|https\)\:\/\///" -e "s/www\.//" -e "s/\..*//"
montest
montest
monautretest
test

```

Mais il doit y avoir moyen de faire mieux, bien mieux.

---

<div class="post-metadata">

**Author:** ![debianhadic](https://www.debian-fr.org/user_avatar/www.debian-fr.org/debianhadic/32/3870_2.png) [@debianhadic](https://www.debian-fr.org/u/debianhadic)\
**Post date:** [Juin 8, 2016, 12:45 UTC](https://www.debian-fr.org/t/extraire-la-partie-principale-dun-nom-de-domaine-avec-sed/69921/2 "2016-06-08T12:45:15Z")

</div>

Le mieux est l’ennemi du bien

---

<div class="post-metadata">

**Author:** ![Yoli](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/y/ee7513/32.png) [@Yoli](https://www.debian-fr.org/u/Yoli)\
**Post date:** [Juin 8, 2016, 1:41 UTC](https://www.debian-fr.org/t/extraire-la-partie-principale-dun-nom-de-domaine-avec-sed/69921/3 "2016-06-08T13:41:10Z")

</div>

```auto
sed -re 's/https?:\/\/|(www.)?|\..*//g'

```

Je ne garantie pas que c’est la meilleure solution mais elle fonctionne aussi.

---

<div class="post-metadata">

**Author:** ![David\_5.1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/ce7236/32.png) [@David\_5.1](https://www.debian-fr.org/u/David_5.1)\
**Post date:** [Juin 9, 2016, 11:34 UTC](https://www.debian-fr.org/t/extraire-la-partie-principale-dun-nom-de-domaine-avec-sed/69921/4 "2016-06-09T23:34:54Z")

</div>

Question bête : pourquoi vouloir faire ça ?

Ne garder que la fin pour identifier vraiment le domaine, pourquoi pas (mais en gardant le TLD donc [montest.be](http://montest.be) par exemple pour éviter l’usurpation de domaine), mais ça me semble compliqué…

Et quid des URL suivantes :  
[http://www.nic.pwc/](http://www.nic.pwc/)

> **[BBC - Home](https://www.bbc.co.uk/)**
>
> The best of the BBC, with the latest news and sport headlines, weather, TV & radio highlights and much more from across the whole of BBC Online

  
ftp://user@actux.eu.org/  
[http://pierre.fritsch.free.fr/blog/](http://pierre.fritsch.free.fr/blog/)  

> **[Accueil](http://www.ssi.gouv.fr/)**
>
> L'ANSSI est l'autorité nationale en matière de sécurité et de défense des systèmes d’information. Prévention, protection, réaction, formation et labellisation de solutions et de services pour la sécurité numérique de la Nation.

Pour la commande en sed pour faire ça, par contre, je ne veux pas savoir ce soir ;-D

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Juin 11, 2016, 9:57 UTC](https://www.debian-fr.org/t/extraire-la-partie-principale-dun-nom-de-domaine-avec-sed/69921/5 "2016-06-11T09:57:39Z")

</div>

Pas besoin de faire ‘cat fichier | sed traitement’ … normalement, juste ‘sed traitement fichier’ suffit ! 😉

---

<div class="post-metadata">

**Author:** ![Esprit](https://www.debian-fr.org/user_avatar/www.debian-fr.org/esprit/32/5917_2.png) [@Esprit](https://www.debian-fr.org/u/Esprit)\
**Post date:** [Juin 12, 2016, 8:41 UTC](https://www.debian-fr.org/t/extraire-la-partie-principale-dun-nom-de-domaine-avec-sed/69921/6 "2016-06-12T08:41:32Z")

</div>

Merci à tous pour vos réponses. 🙂

@debianhadic: Tu veux dire qu’il vaut mieux que la commande soit un peu longue mais bien claire plutôt que courte et dure à lire ?

@David_5.1: J’ai mis en place des certificats Let’s Encrypt pour les deux sites que je gère actuellement en me basant sur le [le tutoriel de sysnove](https://www.sysnove.fr/blog/2016/03/utilisation-pratique-letsencrypt-acme-tiny.html).

J’ai cependant fait un petit peu autrement et je me retrouve donc à devoir modifier un peu le script qu’ils donnent. J’utilise acme-tiny qui crée un fichier temporaire pour vérifier le site.

Au départ, il écrit dans ce dossier :

```
acme_dir=/srv/www/acme-challenges

```

Et moi j’ai besoin qu’il écrive dans _/var/www/domaine1/.well-known/acme-challenge/_ et _/var/www/domaine2/.well-known/acme-challenge/_ .

J’ai donc modifié le script en récupérant la variable “$domain” ([www.domaine1.be](http://www.domaine1.be)) pour récupérer la partie qui m’intéresse (domaine1) :

```
domaine_reduit=`echo $domain | sed -e "s/www\.//" -e "s/\..*//"`
acme_dir=/var/www/$domaine_reduit/.well-known/acme-challenge

```

Je ne sais pas si c’est très “propre” mais ça marche. Dans la foulée, j’étais curieux de voir comment utiliser **sed** pour d’autres cas (avec http, https, avec des sous-domaines, …) mais c’était plus par curiosité intellectuelle. 🙂

@PengouinPdt: Bien vu, j’y penserai pour la prochaine fois.
