我想递归下载页面https://en.wikipedia.org/wiki/Main_Page,但只下载来自 upload.wikimedia.org 和 de.wikipedia.org 的文件
它通过使用以下命令来工作:
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
我的问题是:是否可以在一个命令中组合两个域?像这样的东西:
wget -H -r -l1 --accept-regex de.wikipedia.org||upload.wikimedia.org https://en.wikipedia.org/wiki/Main_Page
其中“||” 意思是“或”
通常
--accept-regex
使用 POSIX扩展正则表达式语法,其中单个|
用于替代分支。(如果您告诉 wget 使用 PCRE 语法,这同样适用,这是 POSIX ERE 的超集。)请注意,POSIX扩展正则表达式语法(由
egrep
or使用sed -E
)不同于 POSIX基本正则表达式语法(由grep
or使用sed
)。例如,BRE\|
用于替代分支和|
文字管道符号,但 ERE 正好相反。括号和许多其他特殊字符也是如此,它们在 BRE 中必须以反斜杠为前缀,但在 ERE 中则不需要。无论如何,正则表达式看起来像这样:
de.wikipedia.org|upload.wikimedia.org
(de|upload).wikimedia.org
更正确(点在正则表达式语法中也很特殊):
de\.wikipedia\.org|upload\.wikimedia\.org
(de|upload)\.wikimedia\.org
请注意,该
|
字符在大多数交互式 shell 中是特殊的(它是管道运算符),因此需要引用包含它的任何参数: