Автоматически переименовывать файлы fasta с идентификатором первой последовательности в каждом файле - PullRequest
0 голосов
/ 07 января 2019

У меня есть несколько файлов fasta с одной последовательностью в одном каталоге. Я хочу переименовать каждый файл fasta с заголовком единственной последовательности, присутствующей в файле fasta. Когда я запускаю свой код, я получаю «Шаблон замещения не завершен в (предоставленный пользователем код)»

мой код:

#!/bin/bash

for i in /home/maryem/files/;
do 
  if [ ! -f $i ]; then 
     echo "skipping $i"; 
  else 
     newname=`head -1 $i | sed 's/^\s*\([a-zA-Z0-9]\+\).*$/\1/'`; 
     [ -n "$newname" ] ; 
      mv -i $i $newname.fasta || echo "error at: $i"; 
  fi; 
done | rename s/ // *.fasta

файл fasta:

>NC_013361.1 Escherichia coli O26:H11 str. 11368 DNA, complete genome
AGCTTTTCATTCTGACTGCAATGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTCTCTGACAGCAGCTTCTGAACTG
GTTACCTGCCGTGAGTAAATTAAAATTTTATTGACTTAGGTCACTAAATACTTTAACCAATATAGGCATAGCGCACAGAC
AGATAAAAATTACAGAGTACACAACATCCATGAAACGCATTAGCACCACCATTATCACCACCATCACCATTACCACAGGT

Я не уверен, есть ли другой способ переименовать каждый файл с идентификатором в заголовке ??

1 Ответ

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

Учитывая, что идентификатор является первым «словом» файла, вы можете запустить следующее в каталоге, содержащем файлы fasta.

for f in *.fasta; do d="$(head -1 "$f" | awk '{print $1}').fasta"; if [ ! -f "$d" ]; then mv "$f" "$d"; else echo "File '$d' already exists! Skiped '$f'"; fi; done

Кредит: https://unix.stackexchange.com/a/13161

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