多个域名进入 wget --accept-regex?

多个域名进入 wget --accept-regex?

我想递归下载该页面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

其中“||”表示“或”

答案1

通常--accept-regex使用 POSIX扩展正则表达式语法,其中单身的 |用于替代分支。(如果您告诉 wget 使用 PCRE 语法(POSIX ERE 的超集),同样适用。)

请注意 POSIX扩展正则表达式语法(由egrep或使用sed -E)与 POSIX 不同基本的正则表达式语法(由grep或使用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 中都是特殊的(它是管道运算符),因此任何包含它的参数都需要用引号引起来:

wget --accept-regex "(de|upload).wikimedia.org"

相关内容