Оболочка на самом деле не подходит для такого типа синтаксического анализа. Вы можете видеть в своем собственном коде, что вы читаете весь каждый файл один раз для каждого имени гена, считанного из файла gene.txt
.
Следующая одиночная команда awk
сделает то же самое быстрее.
awk -F '>' '
FNR == NR { genes[$1]; next }
/^>/ && $2 in genes { if (out != "") close(out);
out = $2 ".fa"
split(FILENAME, a, "_")
$0 = ">" a[1] "_" $2 }
out != "" { print >>out }' genes.txt *_ref.fasta
Это сначала читает файл genes.txt
и создает из него ассоциативный массив с именем genes
с именами генов в качестве ключей.
Когда дело доходит до файлов Fasta (, код предполагает, что все они называются примерно так XXX_ref.fasta
), когда мы читаем заголовок Fasta, а ген в заголовке является ключом в нашем genes
списке, затем мы создаем выходное имя файла из имени гена как genename.fa
и переписываем заголовок, чтобы включить часть текущего имени файла до подчеркивания.
Если исходным заголовком в XXX_ref.fasta
является
>genename
тогда это будет преобразовано в
>XXX_genename
Последняя часть скрипта awk
отправляет все строки в соответствующий выходной файл.
Тестирование с предоставленными вами данными приводит к созданию трех файлов:
$ ls *.fa
FBgn0070974.fa FBgn0076379.fa FBgn0080937.fa
$ cat FBgn0076379.fa
>CR1_FBgn0076379
ATGCTGCGCACCCTTTTCGCCGTGCGTGGTCAGTGCCAGCAGCTGCTGAGGAGAACATTCACCCCCCATTGCAGTGGCCAACGA
Firewalld — это брандмауэр на основе зоны -. Все интерфейсы являются частью некоторой зоны. Если это не указано явно, то интерфейс добавляется в зону по умолчанию. Первоначально это «общедоступная» зона, которая разрешает только избранные входящие соединения.
Из документации по зоне по умолчанию .
The default zone is the zone that is used for everything that is not explicitly bound/assigned to another zone. That means that if there is no zone assigned to a connection, interface or source, only the default zone is used.
Вы можете изменить зону по умолчанию или добавить интерфейс в определенную зону. Вы также можете определить свои собственные зоны. Для этих задач см. документацию RHEL 8:Работа с зонами firewalld