regex
解析することは避けますhtml
。ここでは、 perlを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/
})'
ただし、 sedを主張する場合、正規表現にはいくつかの問題があります。まず、グループ化を行うために括弧をエスケープする必要があります。第二にrdf/uni
、一致しません。第三に、あなたがそうするとき、[^"]*
それは拡張子をバイパスしていrdf.gz
ます. a を探すように変更し.
、拡張子を確認しますが、非常に壊れやすいことを覚えています。たとえば、.
名前に a が含まれるファイルの場合など、多くの点で失敗する可能性があります。
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