Hah, oboje zdajemy sobie z tego sprawę w tym samym czasie. Cieszę się, że mogę pomóc.
derobert
10
Aby zacytować stronę podręcznika:
${parameter##word}
Remove matching prefix pattern. The word is expanded to produce
a pattern just as in pathname expansion. If the pattern matches
the beginning of the value of parameter, […]
/*nie pasuje do początku, ponieważ Twój adres URL zaczyna się od hnie /.
Trywialny sposób na zrobienie tego, czego szukasz (zgodnie z Twoim komentarzem) to echo "$url" | rev | cut -d / -f 1 | rev. Ale oczywiście da to interesujące wyniki dla adresów URL kończących się ukośnikiem.
Innym sposobem na zrobienie tego, co chcesz, może być użycie wzorca */.
dirname $url
. Lubgrep -o 'http://[^/]*' <<<$url
.Odpowiedzi:
Ponieważ słowo musi pasować do ciętego łańcucha. Powinno to wyglądać następująco:
Dzięki derobert, poprowadziłeś mnie we właściwym kierunku.
źródło
Aby zacytować stronę podręcznika:
/*
nie pasuje do początku, ponieważ Twój adres URL zaczyna się odh
nie/
.Trywialny sposób na zrobienie tego, czego szukasz (zgodnie z Twoim komentarzem) to
echo "$url" | rev | cut -d / -f 1 | rev
. Ale oczywiście da to interesujące wyniki dla adresów URL kończących się ukośnikiem.Innym sposobem na zrobienie tego, co chcesz, może być użycie wzorca
*/
.źródło
basename
(1) działa również z adresami URL, więc możesz po prostu:źródło
Zobacz także: Bash Extended Globbing , choć w tym przypadku rozszerzony glob nie jest niezbędny.
Wynik:
file.ext
źródło