Как вызвать метод из расширенного инструмента в bash - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть инструмент для сравнения выравнивания.Команда:

./mscore -cftit <inputFile> <inputFile2>

В результате получается четыре строки в консоли.Что я пытаюсь сделать?

У меня есть сотни файлов:

file1.afa
resFile1.fasta
file2.afa
resFile2.fasta
file3.afa
resFile3.fasta
...

Мне нужно указать аргументы в файле "X.afa" первого ряда и во втором же имени, но "X".fasta "файл.Результат должен быть сохранен как файл Xfinal.txt или как-то так.Поэтому у меня должны быть сотни * final.txt файлов.(после того, как я поймаю его в python и посчитаю).

Как я могу это сделать в bash?

Я пробовал что-то вроде этого:

#!/bin/bash
ls *.afa | parallel "mscore -cftit {} {}.fasta >{}final.txt"

ноконечно, это не сработало.Баш это мне не знакомо, мне просто нужно быстро получить биологические результаты и я хочу автоматизировать свою работу.Я научусь этому, но теперь мне нужно это быстро.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 15 февраля 2019

Поэтому я думаю, что вам нужна последовательность команд, подобная этой:

mscore -cftit file1.afa resFile1.fasta > File1final.txt
mscore -cftit file2.afa resFile2.fasta > File2final.txt
mscore -cftit file3.afa resFile3.fasta > File3final.txt
...

Попробуйте:

ls *.afa | while read A; do B=`echo $A | sed 's/^file/resFile/;s/.afa$//'`; ./mscore -cftit $A $B.fasta > ${B}final.txt; done

Лучшая версия (спасибо @tripleee):

for afafile in *.afa; do number="${afafile#file}"; number="${number%.afa}"; ./mscore -cftit "$afafile" "resFile${number}.fasta" > "file${number}final.txt"; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...