Ersetzen von Schrägstrichen in einer URL

Ersetzen von Schrägstrichen in einer URL

Ich möchte alle Schrägstriche aus einer Webadresse ersetzen.

Beispieladresse:https://example.com/sub/ordner/dateien/datei.txt

Erwartetes Ergebnis:beispiel.com-unterordner-dateien-datei.txt

Ich kann das https entfernen, aber die verbleibenden Schrägstriche scheine ich nicht durch Folgendes ersetzen zu können:

echo $(echo 'https://example.com/sub/folder/files/file.txt' | sed 's/http[s]*:\/\///')

Das Obige gibt mir nur dies:

example.com/sub/folder/files/file.txt

Das Hinzufügen eines zweiten Sed zum Ersetzen von Schrägstrichen entfernt nur den ersten. Was mache ich falsch?

Antwort1

Versuche dies:

echo "https://www.example.com/sub/folder/files/file.txt" | sed -e 's#http[s]://##' -e 's#/#-#g'

Das Ergebnis lautet: www.example.com-sub-folder-files-file.txt

der Grund, warum nur das „zuerst gefundene“ ersetzt wurde, liegt darin, dass Ihnen das „g“ als letzter an sed übergebener „Parameter“ fehlte. Es steht für „global“ und ersetzt alle gefundenen Instanzen durch den gewünschten Ersatz. Ohne dieses wird nur die erste gefundene Instanz ersetzt.

Außerdem ist es erwähnenswert, dass Sie die Parameter des sed-Befehls durch jedes beliebige Symbol trennen können, es muss nicht unbedingt „/“ sein. Ich bevorzuge die Verwendung eines Symbols, das an der Suche und dem Ersetzen überhaupt nicht beteiligt ist, da Sie sich dann nicht zu viele Gedanken über Shortcut-Zeichen machen müssen und potenzielle Fehler beim Ersetzen von „/“ vermeiden.

Sie können in sed auch einige Befehle aneinanderreihen, indem Sie die Option -e verwenden. Wie Sie oben sehen können, habe ich „https://“ durch nichts ersetzt (und es entfernt) und dann alle „/“ durch „-“ ersetzt. Einfach, einfach.

Hoffe es hilft dir

Antwort2

Du brauchst kein Doppeltes echo.

Ich verstehe nicht, was du meinst mitDas Hinzufügen eines zweiten Sed zum Ersetzen von Schrägstrichen entfernt nur den ersten.- Sie haben in Ihrem Beispiel nur einen Befehl. Mit zwei Befehlen wie diesen sed können Sie ganz einfach tun, was Sie wollen :sed

echo 'https://example.com/sub/folder/files/file.txt' | sed 's,http[s]*:\/\/,,;s,/,-,g'

verwandte Informationen