Mam link http:
http://www.test.com/abc/def/efg/file.jar
i chcę zapisać ostatnią część file.jar w zmiennej, więc ciąg wyjściowy to „file.jar”.
Warunek : link może mieć inną długość, np .:
http://www.test.com/abc/def/file.jar.
Próbowałem w ten sposób:
awk -F'/' '{print $7}'
, ale problemem jest długość adresu URL, więc potrzebuję polecenia, którego można użyć dla dowolnej długości adresu URL.
bash
shell-script
awk
cut
FunTomas
źródło
źródło
file=${myurl##*/}
Następnie użyć chciwego dopasowywania wstecznego, aby utworzyć kopię zapasową?
(nie zapomnij go uciec!), Np.echo ${file%%\?*}
basename
idirname
działa dobrze również w przypadku adresów URL:źródło
basename
idirname
dzieli ciągi znaków na /, i tak się dzieje, że działa również z adresami URL, przynajmniej tak długo, jak długo nie mają one części lokalnej (choć ogólnie nie z URI)./relative/URI/with/absolute/path/to/resource.txt
,relative/path/to/resource.txt
,../../../resource.txt
iresource.txt
en.wikipedia.org/wiki/.../relative/path
może to być ścieżka systemu plików lub względny identyfikator URI. Ale który z nich zależy od kontekstu. Gdy jest używany jako ścieżka do systemu plików, nie jest to identyfikator URI. Gdy jest używany jako identyfikator URI, nie jest ścieżką do systemu plików. Powiedzenie, że jest to URI tylko dlatego, że zdarza się, że pasuje do składni, jest jak powiedzenie, że każde ze słów w tym komentarzu jest również URI.Za pomocą
awk
można$NF
uzyskać ostatnie pole niezależnie od liczby pól:Jeśli przechowujesz ten ciąg w zmiennej powłoki, możesz użyć:
źródło
Większość opublikowanych odpowiedzi nie jest odporna na adresy URL zawierające ciągi lub cele zapytania, takie jak na przykład:
https://example.com/this/is/a/path?query#target
Python analizuje adresy URL w swojej standardowej bibliotece; łatwiej jest na to pozwolić. Na przykład,
Możesz skompaktować to w jeden
python3 -c
do użycia w skrypcie powłoki:(Możesz również zachować skrypt w stanie rozbitym, aby był czytelny.
'
Pozwoli ci wstawić nowe wiersze).Oczywiście teraz twój skrypt powłoki jest zależny od Pythona.
(Nie jestem pewien, czy ta próba poradzi sobie z przypadkami, w których składową ścieżki URL jest root (
/
); dostosuj / przetestuj, jeśli to dla Ciebie ważne).źródło
Jedną z metod jest
rev
adres URL, a następnie wyciąć pole, a następnierev
ponownie. na przykład:Wydajność:
Przykład 2:
Wydajność:
źródło