J'ai un lien http:
http://www.test.com/abc/def/efg/file.jar
et je veux enregistrer la dernière partie file.jar dans une variable, de sorte que la chaîne de sortie est "file.jar".
Condition : le lien peut avoir une longueur différente, par exemple:
http://www.test.com/abc/def/file.jar.
Je l'ai essayé de cette façon:
awk -F'/' '{print $7}'
, mais le problème est la longueur de l'URL, j'ai donc besoin d'une commande qui peut être utilisée pour n'importe quelle longueur d'URL.
la source
file=${myurl##*/}
, puis utiliser la correspondance inverse gourmande pour sauvegarder la?
(n'oubliez pas de l'échapper!), Par exempleecho ${file%%\?*}
basename
etdirname
fonctionne aussi bien pour les URL:la source
basename
etdirname
divise les chaînes sur /, et cela se produit également avec les URL, au moins tant qu'elles n'ont pas de partie locale (pas avec les URI en général cependant)./relative/URI/with/absolute/path/to/resource.txt
,relative/path/to/resource.txt
,../../../resource.txt
etresource.txt
en.wikipedia.org/wiki/.../relative/path
peut être soit un chemin d'accès au système de fichiers, soit un URI relatif. Mais lequel de ceux-ci dépend du contexte. Lorsqu'il est utilisé comme chemin d'accès au système de fichiers, ce n'est pas un URI. Lorsqu'il est utilisé comme URI, ce n'est pas un chemin d'accès au système de fichiers. Dire qu'il s'agit d'un URI simplement parce qu'il correspond à la syntaxe revient à dire que chacun des mots de ce commentaire est également un URI.Avec
awk
, vous pouvez utiliser$NF
, pour obtenir le dernier champ, quel que soit le nombre de champs:Si vous stockez cette chaîne dans une variable shell, vous pouvez utiliser:
la source
La plupart des réponses publiées ne sont pas fiables sur les URL qui contiennent des chaînes de requête ou des cibles, telles que, par exemple, les suivantes:
https://example.com/this/is/a/path?query#target
Python a l'analyse d'URL dans sa bibliothèque standard; il est plus facile de le laisser faire. Par exemple,
Vous pouvez compresser cela en un seul
python3 -c
pour une utilisation dans un script shell:(Vous pouvez également conserver le script éclaté, pour plus de lisibilité.
'
Vous permettra de mettre des retours à la ligne.)Bien sûr, maintenant votre script shell dépend de Python.
(Je ne suis pas certain de savoir si cela essaie de gérer les cas où le composant de chemin d'accès de l'URL est la racine (
/
); ajustez / testez si cela vous intéresse.)la source
Une méthode consiste à
rev
l'URL, puis coupez le champ, puis àrev
nouveau. par exemple:Sortie:
Exemple 2:
Sortie:
la source