使用 bash 从 link 下载 tsv 文件,根据请求生成文件

Download tsv file from link which generates the file upon request, using bash

我需要下载从如下链接生成的 .txt 文件: https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRP002480&result=read_run&fields=fastq_ftp&format=tsv&download=true&limit=0 但我需要在 bash shell 中下载它。它在 Firefox 上运行良好,在 shell 上我尝试了 wget 和 curl 无济于事。我在 Stack Overflow 和其他页面上阅读了很多类似的问题,尝试了我能找到的一切,但找不到解决方案。 例如:

curl https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRP002480&result=read_run&fields=fastq_ftp&format=tsv&download=true&limit=0      

这是输出,没有文件下载:

[1] 1094                                                                                                                                       
[2] 1095                                                                                                                                       
[3] 1096                                                                                                                                       
[4] 1097                                                                                                                                       
[5] 1098                                                                                                                                       
[2]   Done                    result=read_run                                                                                                  
[3]   Done                    fields=fastq_ftp                                                                                                 
[4]-  Done                    format=tsv                                                                                                       
(base) user@DESKTOP-LV4SKHQ:/mnt/c/Users/conog/Desktop/prova$ curl: (6) Could not resolve host: www.ebi.ac.uk                              
                                                                                                                                               
[1]-  Exit 6                  curl https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRP002480                                         
[5]+  Done                    download=true 

另一个例子,在我阅读了几篇文章后:

curl -O -L https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRP002480&result=read_run&fields=fastq_ftp&format=tsv&download=true&limit=0
[1] 1056                                                                                                                                       
[2] 1057                                                                                                                                       
[3] 1058                                                                                                                                       
[4] 1059                                                                                                                                       
[5] 1060                                                                                                                                       
[2]   Done                    result=read_run                                                                                                  
[3]   Done                    fields=fastq_ftp                                                                                                 
[4]   Done                    format=tsv                                                                                                       
[5]+  Done                    download=true                                                                                                    
(base) gsoletta@DESKTOP-LV4SKHQ:/mnt/c/Users/conog/Desktop/prova$   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                                                                                                                             
                                 Dload  Upload   Total   Spent    Left  Speed                                                                  
100    49  100    49    0     0     68      0 --:--:-- --:--:-- --:--:--    67                                                                 
                                                                                                                                               
[1]+  Done

最后一个下载一个没有扩展名的 49 字节文件,名为 filereportaccession=SRP002480,内容为:“所需的字符串参数 'result' 不存在”。

我还要补充一点,我是 bash 的新手。 我能做什么?

谢谢!

对我有用:

$ curl -s 'https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRP002480&result=read_run&fields=fastq_ftp&format=tsv&download=true&limit=0'
run_accession   fastq_ftp
SRR1620013  ftp.sra.ebi.ac.uk/vol1/fastq/SRR162/003/SRR1620013/SRR1620013_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR162/003/SRR1620013/SRR1620013_2.fastq.gz
SRR1620014  ftp.sra.ebi.ac.uk/vol1/fastq/SRR162/004/SRR1620014/SRR1620014_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR162/004/SRR1620014/SRR1620014_2.fastq.gz
...
$ wget -O filereport.tsv 'https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRP002480&result=read_run&fields=fastq_ftp&format=tsv&download=true&limit=0'
--2021-11-15 17:51:48--  https://www.ebi.ac.uk/ena/portal/api/filereport?accession=SRP002480&result=read_run&fields=fastq_ftp&format=tsv&download=true&limit=0
Resolving www.ebi.ac.uk (www.ebi.ac.uk)... 193.62.193.80
Connecting to www.ebi.ac.uk (www.ebi.ac.uk)|193.62.193.80|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: ‘filereport.tsv’
...
2021-11-15 17:51:51 (831 KB/s) - ‘filereport.tsv’ saved [675136]

你的问题是你没有在 URL 周围加上引号。当您不引用 URL 时,其中的 & 会导致每个 URL 参数被 bash.

解释为单独的命令