J'essaie d'utiliser sed pour nettoyer des lignes d'URL afin d'extraire uniquement le domaine.
Donc de :
http://www.suepearson.co.uk/product/174/71/3816/
Je veux :
http://www.suepearson.co.uk/
(avec ou sans la barre oblique de fin, cela n'a pas d'importance)
J'ai essayé :
sed 's|\(http:\/\/.*?\/\).*|\1|'
et (en échappant au quantificateur non grégaire)
sed 's|\(http:\/\/.*\?\/\).*|\1|'
mais je ne parviens pas à obtenir le quantificateur non gourmand ( ?
) pour fonctionner, de sorte qu'il finit toujours par correspondre à la chaîne entière.
68 votes
Remarque : si vous délimitez vos regex avec "|", vous n'avez pas besoin d'échapper les "/". En fait, la plupart des gens délimitent avec "|" au lieu de "/" pour éviter les "piquets de clôture".
15 votes
@AttishOculus Le premier caractère après le 's' dans une expression de substitution dans sed est le délimiteur. Ainsi, 's^foo^bar^' ou 's!foo!bar!' fonctionnent également.
1 votes
Pour une regex étendue, utilisez
sed -E 's...
. Pourtant, pas d'opérateur réticent.4 votes
Ce n'est pas une réponse au titre de la question, mais dans ce cas précis, c'est simple.
cut -d'/' -f1-3
travaux.