Ich versuche, sed zu verwenden, um Zeilen von URLs zu bereinigen, um nur die Domain zu extrahieren.
Also von:
http://www.suepearson.co.uk/product/174/71/3816/
Ich will:
http://www.suepearson.co.uk/
(entweder mit oder ohne den abschließenden Schrägstrich, es spielt keine Rolle)
Ich habe es versucht:
sed 's|\(http:\/\/.*?\/\).*|\1|'
und (unter Auslassung des nicht-gierigen Quantors)
sed 's|\(http:\/\/.*\?\/\).*|\1|'
aber ich scheine den nicht-gierigen Quantifizierer nicht zu bekommen ( ?
), um zu funktionieren, so dass am Ende immer die ganze Zeichenfolge übereinstimmt.
68 Stimmen
Eine Randbemerkung: Wenn Sie Ihre Regexe mit "|" abgrenzen, brauchen Sie die "/"s nicht zu escapen. Tatsächlich grenzen die meisten Leute mit "|" anstelle von "/" ab, um die "Zäune" zu vermeiden.
15 Stimmen
@AttishOculus Das erste Zeichen nach dem 's' in einem Ersatzausdruck in sed ist das Trennzeichen. Daher funktionieren auch 's^foo^bar^' oder 's!foo!bar!'
1 Stimmen
Für erweiterte Regex, verwenden Sie
sed -E 's...
. Dennoch, kein unwilliger Betreiber.4 Stimmen
Keine Antwort auf den Titel der Frage, aber in diesem speziellen Fall einfach
cut -d'/' -f1-3
funktioniert.