Hah, das merken wir beide gleichzeitig. Ich bin froh, Ihnen helfen zu können.
Derobert
10
So zitieren Sie die Manpage:
${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, […]
/*stimmt nicht mit dem Anfang überein, da Ihre URL mit hnicht beginnt /.
Eine einfache Möglichkeit, das zu tun, wonach Sie suchen (laut Ihrem Kommentar), ist echo "$url" | rev | cut -d / -f 1 | rev. Aber das wird natürlich interessante Ergebnisse für URLs liefern, die mit einem Schrägstrich enden.
Eine andere Möglichkeit, das zu tun, was Sie möchten, besteht möglicherweise darin, */stattdessen das Muster zu verwenden.
Ich bin froh, dass Sie erklärt haben, was zu tun ist, und das Zitat aus der Manpage ist ein riesiges Plus! Das hat mir sehr geholfen! Danke noch einmal! :)
Fadi
5
basename(1) funktioniert auch mit URLs, Sie können also einfach Folgendes tun:
dirname $url
. Odergrep -o 'http://[^/]*' <<<$url
.Antworten:
Weil das Wort mit der zu schneidenden Zeichenfolge übereinstimmen muss. Es sollte so aussehen:
Danke derobert, du hast mich in die richtige Richtung gelenkt.
quelle
So zitieren Sie die Manpage:
/*
stimmt nicht mit dem Anfang überein, da Ihre URL mith
nicht beginnt/
.Eine einfache Möglichkeit, das zu tun, wonach Sie suchen (laut Ihrem Kommentar), ist
echo "$url" | rev | cut -d / -f 1 | rev
. Aber das wird natürlich interessante Ergebnisse für URLs liefern, die mit einem Schrägstrich enden.Eine andere Möglichkeit, das zu tun, was Sie möchten, besteht möglicherweise darin,
*/
stattdessen das Muster zu verwenden.quelle
basename
(1) funktioniert auch mit URLs, Sie können also einfach Folgendes tun:quelle
Siehe auch: Bash Extended Globbing , obwohl in diesem Fall der Extended Glob nicht unbedingt erforderlich ist.
Ausgabe:
file.ext
quelle