Quero baixar, recursivamente, a página https://en.wikipedia.org/wiki/Main_Page , mas apenas os arquivos de upload.wikimedia.org e de.wikipedia.org
Ele funciona usando estes comandos:
wget -H -r -l1 --accept-regex upload.wikimedia.org https://en.wikipedia.org/wiki/Main_Page
wget -H -r -l1 --accept-regex de.wikipedia.org https://en.wikipedia.org/wiki/Main_Page
Minha pergunta é: é possível combinar dois domínios em um único comando? Algo assim:
wget -H -r -l1 --accept-regex de.wikipedia.org||upload.wikimedia.org https://en.wikipedia.org/wiki/Main_Page
onde "||" significa "OU"
Normalmente usa a sintaxe
--accept-regex
POSIX Extended Regular Expression , onde um single|
é usado para ramificações alternativas. (O mesmo se aplica se você disser ao wget para usar a sintaxe PCRE, que é um superconjunto de POSIX ERE.)Observe que a sintaxe regexp estendida POSIX (usada por
egrep
oused -E
) é diferente da sintaxe regexp básica POSIX (usada porgrep
oused
). Por exemplo, BRE usa\|
para ramificações alternativas e|
para um símbolo de barra literal, mas ERE faz exatamente o oposto. O mesmo vale para parênteses e muitos outros caracteres especiais que precisam ser prefixados com barra invertida no BRE, mas não no ERE.Em qualquer caso, o regexp ficaria assim:
de.wikipedia.org|upload.wikimedia.org
(de|upload).wikimedia.org
Mais correto (os pontos também são especiais na sintaxe regex):
de\.wikipedia\.org|upload\.wikimedia\.org
(de|upload)\.wikimedia\.org
Observe que o
|
caractere é especial na maioria dos shells interativos (é o operador pipe ), portanto, qualquer parâmetro que o contenha precisa ser citado: