Перенаправление совпадений sed в отдельные файлы

У меня есть файл, содержащий список имен последовательностей ДНК и другой, содержащий последовательности ДНК. Они выглядят так:

$ cat list.txt seq1 seq3 $ cat sequences.txt >seq1 AAAAA AAAAA >seq2 CCCCC CCCCC CCCCC >seq3 TTTTT 

Я хочу получить только seq1 и seq2 (перечислены в list.txt) и перенаправить их на отдельные файлы. Как видите, каждая последовательность имеет разное количество строк, поэтому я не могу просто сказать ‘sed‘, чтобы он набрал N строк после каждого совпадения. Я хочу, чтобы мой вывод был таким:

 $ ls seq1.txt seq2.txt $ cat seq1.txt >seq1 AAAAA AAAAA $ cat seq2.txt >seq3 TTTTT 

Я использую это:

 while read list do names=$(echo $list) sed '/$list/,/>/{/>/q}' "$PWD/sequences.txt" > "$names".dna done < list.txt 

Тем не менее, вывод:

 $ ls seq1.txt seq2.txt $ cat seq1.txt >seq1 AAAAA AAAAA >seq3 TTTTT $ cat seq2.txt >seq1 AAAAA AAAAA >seq3 TTTTT 

Скрипт создает отдельные файлы, но все они содержат все совпадения, а не отдельные, как мне нужно.

Заранее спасибо.

Не могу сделать это только с помощью sed. Но с awk:

 awk ' # remember the wanted sequences NR == FNR {seqs[$1]; next} $1 ~ /^>/ { # get the sequence name seq = $1 sub(/^>/, "", seq) p = 0 # if it is in the list, set up the file to print to if (seq in seqs) { f = seq ".txt" p = 1 } } p {print > f} ' list.txt sequences.txt 
 command awk '$1 ~ /seq1/{f=1}$1~/seq2/{f=0;exit}f' sequences.txt >seq1.txt sed -n '/seq3/,$p' sequences.txt > seq2.txt 

выход

 cat seq1.txt seq1 AAAAA AAAAA cat seq2.txt seq3 TTTTT