gpt4 book ai didi

regex - 使用 curl 列出文件

转载 作者:行者123 更新时间:2023-12-04 02:46:19 24 4
gpt4 key购买 nike

我正在尝试列出此网站上的所有 gz 文件

site=http://ftp.ebi.ac.uk/pub/databases/uniprot/current_release/rdf/
curl -s "$site" --list-only | sed -n 's%.*href="rdf/uni([^"]*\.rdf.gz)".*%\1%p'

但我收到此错误:
sed: -e expression #1, char 40: invalid reference \1 on `s' command's RHS

最佳答案

我会避免 regex解析 html .在这里,您可以选择 mojolicious作为解析器:

perl -Mojo -E '
g(q|http://ftp.ebi.ac.uk/pub/databases/uniprot/current_release/rdf/|)
->dom
->find(q|a|)
->each(sub {
my $t = $_->text;
say $t if $t =~ m/rdf\.gz\Z/
})'

但如果你坚持 ,你的正则表达式有问题。首先,必须对括号进行转义才能进行分组。二、 rdf/uni不是比赛。三、什么时候做 [^"]*它绕过扩展 rdf.gz .更改它以查找 .然后检查扩展名,但我记得那个很脆弱。它可能会以多种方式失败,例如文件带有 .以其名义:
curl -s "$site" --list-only | sed -n 's%.*href="\([^.]*\.rdf\.gz\)".*%\n\1%; ta; b; :a; s%.*\n%%; p'

两个命令都产生:
citations.rdf.gz
databases.rdf.gz
diseases.rdf.gz
enzyme.rdf.gz
go.rdf.gz
journals.rdf.gz
keywords.rdf.gz
locations.rdf.gz
pathways.rdf.gz
taxonomy.rdf.gz
tissues.rdf.gz
uniparc.rdf.gz
uniprot.rdf.gz
uniref.rdf.gz

关于regex - 使用 curl 列出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18780322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com