Mam problem z analizowaniem adresów URL w bashu. Mają one następujący format:
http(s)://some.host.com/some/web/directory/file
Chcę wyodrębnić tylko protokół i ciąg hosta, aby wynik końcowy był:
http(s)://some.host.com/
Jak to osiągnąć w bash?
Odpowiedzi:
2 dla odpowiedzi № 1Możesz użyć grep:
grep -o "https?://[^/]+/"
grep -Eo "https?://[^/]+/"
Dane wejściowe mogą pochodzić z potoku lub pliku.
A jeśli twoja część protokołu jest dosłownie http(s)
, możesz mieć:
grep -o "http(s)://[^/]+/"
0 dla odpowiedzi nr 2
Możesz spróbować tego polecenia GNU sed aslo,
$ echo "http(s)://some.host.com/some/web/directory/file" | sed -r "s~^([^/]*//[^/]*/).*~1~g"
http(s)://some.host.com/