Um forro, como foi pedido:)
A variável URL_1
é usada para legibilidade. Não é necessário.
#!/bin/bash
URL_1=http://www.squid-cache.org/Versions/
curl "$URL_1" |
grep -Pzo '(?s)Stable Versions.*?langpack' |
sed -rn '$,$s_.*"(.*)">.*<td>(.*)</td></tr>.*_squid-.tar.gz_p' |
xargs -I{} wget "${URL_1}"{}
-
%código%
-
grep -Pzo '(?s)Stable Versions.*?langpack'
Interpreta o padrão como uma expressão regular compatível com Perl. -
-P
opção necessária para pesquisa de várias linhas. -
-z
imprime apenas as partes correspondentes (não vazias) de uma linha correspondente. -
-o
É ativado "ponto corresponde a nova linha" para o restante da expressão regular. Informações: Modificadores Inline . -
(?s)
correspondência não voraz.
-
-
%código%
- crie essa parte aqui:
.*?
-
sed -rn '$,$s_.*"(.*)">.*<td>(.*)</td></tr>.*_squid-.tar.gz_p'
processa apenas a última linha. - Eu uso o sublinhado em vez de barra para o comando
v3/3.5/squid-3.5.26.tar.gz
ubstitute, devido a barras nas tags$,$
es
. Exemplo:</tr>
em vez</td>
- crie essa parte aqui:
-
%código%
- transmitir duas partes concatenadas para o
s_foo_bar_
pelos/foo/bar/
:xargs -I{} wget "${URL_1}"{}
ewget
.
- transmitir duas partes concatenadas para o
EDIT - versão sem xargs (é desnecessário aqui):
#!/bin/bash
URL_1=http://www.squid-cache.org/Versions/
wget "${URL_1}$(curl "$URL_1" |
grep -Pzo '(?s)Stable Versions.*?langpack' |
sed -rn '$,$s_.*"(.*)">.*<td>(.*)</td></tr>.*_squid-.tar.gz_p')"