Tengo un enlace http:
http://www.test.com/abc/def/efg/file.jar
y quiero guardar la última parte file.jar en variable, por lo que la cadena de salida es "file.jar".
Condición : el enlace puede tener una longitud diferente, por ejemplo:
http://www.test.com/abc/def/file.jar.
Lo intenté de esa manera:
awk -F'/' '{print $7}'
, pero el problema es la longitud de la URL, por lo que necesito un comando que pueda usarse para cualquier longitud de URL.
bash
shell-script
awk
cut
FunTomas
fuente
fuente
file=${myurl##*/}
, luego usar la codiciosa coincidencia inversa para hacer una copia de seguridad de?
(¡no se olvide de escapar!), Por ejemploecho ${file%%\?*}
basename
ydirname
funciona bien para las URL también:fuente
basename
ydirname
divide cadenas en /, y eso también funciona con URL, al menos siempre que no tengan una parte local (no con URI en general)./relative/URI/with/absolute/path/to/resource.txt
,relative/path/to/resource.txt
,../../../resource.txt
yresource.txt
en.wikipedia.org/wiki/.../relative/path
puede ser una ruta del sistema de archivos o un URI relativo. Pero cuál de ellos es depende del contexto. Cuando se usa como una ruta del sistema de archivos, no es un URI. Cuando se usa como un URI, no es una ruta del sistema de archivos. Decir que es un URI solo porque coincide con la sintaxis es como decir que cada una de las palabras en este comentario también es un URI.Con
awk
, puede usar$NF
, para obtener el último campo, independientemente del número de campos:Si almacena esa cadena en la variable de shell, puede usar:
fuente
La mayoría de las respuestas publicadas no son sólidas en las URL que contienen cadenas de consulta u objetivos, como, por ejemplo, lo siguiente:
https://example.com/this/is/a/path?query#target
Python tiene análisis de URL en su biblioteca estándar; Es más fácil dejarlo hacerlo. P.ej,
Puede compactarlo en un solo
python3 -c
para usar en un script de shell:(También puede mantener el guión desglosado, también, para
'
facilitar la lectura. Le permitirá poner nuevas líneas).Por supuesto, ahora su script de shell depende de Python.
(Estoy un poco inseguro sobre si trata de manejar casos donde el componente de ruta de la URL es la raíz (
/
); ajustar / probar si eso es importante para usted).fuente
Un método es
rev
la URL, luego corta el campo y luegorev
nuevamente. p.ej:Salida:
Ejemplo 2
Salida:
fuente