Интерпретация переменной BASH при загрузке последовательностей генома из ссылок ftp в сценарии - PullRequest
0 голосов
/ 29 января 2019

Я пытался загрузить данные последовательности генома, используя ссылки 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, поэтому я попытался включить весь свой код, окружающий это.Спасибо за любую помощь!

1 Ответ

0 голосов
/ 29 января 2019

Вам необходимо удалить символы возврата каретки.Заменить

sed 's/"//g'

на

tr -d '"\r'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...