Eu tenho um link http:
http://www.test.com/abc/def/efg/file.jar
e quero salvar a última parte file.jar na variável, para que a sequência de saída seja "file.jar".
Condição : o link pode ter um comprimento diferente, por exemplo:
http://www.test.com/abc/def/file.jar.
Eu tentei assim:
awk -F'/' '{print $7}'
, mas o problema é o tamanho do URL, por isso preciso de um comando que possa ser usado para qualquer tamanho de URL.
bash
shell-script
awk
cut
FunTomas
fonte
fonte
file=${myurl##*/}
, em seguida, usar a correspondência reversa gulosa para fazer backup no?
(não se esqueça de escapar disso!), Por exemploecho ${file%%\?*}
basename
edirname
funciona bem também para URLs:fonte
basename
edirname
divide as strings em /, e isso também funciona com URLs, pelo menos enquanto eles não tiverem uma parte local (embora não com URIs em geral)./relative/URI/with/absolute/path/to/resource.txt
,relative/path/to/resource.txt
,../../../resource.txt
eresource.txt
en.wikipedia.org/wiki/.../relative/path
pode ser um caminho do sistema de arquivos ou um URI relativo. Mas qual deles depende do contexto. Quando é usado como um caminho do sistema de arquivos, não é um URI. Quando é usado como um URI, não é um caminho do sistema de arquivos. Dizer que é um URI apenas porque coincide com a sintaxe é como dizer que cada uma das palavras deste comentário também é um URI.Com
awk
, você pode usar$NF
, para obter o último campo, independentemente do número de campos:Se você armazenar essa sequência na variável shell, poderá usar:
fonte
A maioria das respostas postadas não é robusta em URLs que contêm sequências de caracteres ou destinos de consulta, como, por exemplo, o seguinte:
https://example.com/this/is/a/path?query#target
Python possui análise de URL em sua biblioteca padrão; é mais fácil deixar fazer isso. Por exemplo,
Você pode compactar isso em um único
python3 -c
para uso em um shell script:(Você também pode manter o script dividido, para facilitar a leitura.
'
Permitirá inserir novas linhas.)Obviamente, agora seu script shell depende do Python.
(Estou um pouco inseguro sobre se isso tenta lidar com casos em que o componente do caminho da URL é a raiz (
/
); ajuste / teste se isso for importante para você.)fonte
Um método é
rev
o URL, recorte o campo e, em seguida,rev
novamente. por exemplo:Saída:
Exemplo 2:
Saída:
fonte