从脚本中的ftp链接下载基因组序列时的BASH变量解释



我一直在尝试使用ftp链接下载基因组序列数据,如下所示:https://www.ncbi.nlm.nih.gov/genome/doc/ftpfaq/

我在tsv表的最后一列中有我的序列的ftp链接,我使用下面的代码从for循环中的每一行中提取这些链接:

$ ftp=`head -$line_number $input_table | awk -F 't' '{print $NF}' | tail -1 | sed 's/"//g'`

末尾的sed命令是从输出中删除双引号,否则wgetrsync会将其解释为字符串的一部分(导致它们失败)。

为了下载每个序列,我将上面链接中的行添加到循环中(下面的确切代码):

$ wget --recursive --no-host-directories --cut-dirs=6 "${ftp}" -P "new_directory/"

我还尝试使用https和rsync下载,按照建议更改链接,将sed 's/ftp/rsync/'sed 's/ftp/https/'添加到ftp变量的管道中:

$ rsync -rvth --copy-links --prune-empty-dirs "${ftp}" "new_directory/"
$ wget --recursive -e robots=off --reject "index.html" --no-host-directories --cut-dirs=6 "$ftp" -P "new_directory/"

在我的脚本中,这些命令无法找到正确的目录(请参阅下面的错误)。

FTP:$ No such file ‘GCA_000048645.1_ASM4864v1r’.

RSYNC:rsync: link_stat "/all/GCA/000/048/645/GCA_000048645.1_ASM4864v1#015" (in genomes) failed: No such file or directory (2)

然而,当我在脚本之外尝试时,将每个链接(由脚本中的$ echo $ftp行输出)直接输入到上面的命令中是有效的,下载是成功的。输出还匹配原始表中的链接(下面的示例)。

ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/048/665/GCA_000048665.1_ASM4866v1

我想我的语法或BASH读取变量的方式一定有错误,但我对BASH中的变量替换了解不够,无法解决这个问题?有人能告诉我我可能有什么问题吗?

注意:我曾尝试在脚本中的所有其他变量(如上面一行中的line_number和输入文件变量)以及这些变量的不同组合中添加双引号和圆括号,但都无济于事。为了简单起见,我还没有包含完整的脚本,但我已经检查了其余部分的错误,问题似乎肯定是ftp变量的解释,所以我试图包含所有围绕它的代码。谢谢你的帮助!

您需要删除回车符。更换

sed 's/"//g'

带有

tr -d '"r'

相关内容

  • 没有找到相关文章

最新更新