Я пытался загрузить данные последовательности генома, используя ссылки ftp, следуя инструкциям, найденным здесь: https://www.ncbi.nlm.nih.gov/genome/doc/ftpfaq/
У меня есть ссылки ftp для моих последовательностей в последнем столбце таблицы tsv, которым я являюсьизвлечение из каждой строки в цикле for с использованием приведенного ниже кода:
$ ftp=`head -$line_number $input_table | awk -F '\t' '{print $NF}' | tail -1 | sed 's/\"//g'`
Команда sed
в конце состоит в удалении двойных кавычек из выходных данных, которые wget
и rsync
иначе интерпретироваликак часть строки (вызывая их сбой).
Чтобы загрузить каждую последовательность, я добавил строки из вышеуказанной ссылки в цикл (точный код ниже):
$ 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_ASM4864v1\r’.
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 и input file в строке выше), а такжеразличные комбинации этих, но безрезультатно.Для простоты я не включил свой полный сценарий, но я проверил остаток на наличие ошибок, и проблема, безусловно, связана с интерпретацией переменной ftp, поэтому я попытался включить весь свой код, окружающий это.Спасибо за любую помощь!