extraer cada dato de secuenciación como archivo individual

Hay un archivo ecoli.ffn con filas que indican el nombre de los genes de secuenciación:

 $head ecoli.ffn >ecoli16:g027092:GCF_000460315:gi|545267691|ref|NZ_KE701669.1|:551259-572036 ATGAGCCTGATTATTGATGTTATTTCGCGT AAAACATCCGTCAAACAAACGCTGATTAAT >ecoli16:g000011:55989:gi|218693476|ref|NC_011748.1|:1128430-1131042 GTGTACGCTATGGCGGGTAATTTTGCCGAT >ecoli16:g000012:55989:gi|218693476|ref|NC_011748.1|:1128430-1131042 GTGTACGCTATGGCGGGTAATTTTGCCGAT CTGACAGCTGTTCTTACACTGGATTCAACC CTGACAGCTGTTCTTACACTGGATTCAACC 

Como se muestra arriba, el nombre del gen se encuentra entre el primer y segundo colon:

 g027092 g000011 g000012 

Me gustaría usar ecoli.ffn para generar tres archivos: g027092.txt , g000011.txt , g000012.txt , que contiene los datos de cada secuencia.

Por ejemplo, g027092.txt contendrá los datos sin procesar pero sin el encabezado :

 $cat g027092.txt ATGAGCCTGATTATTGATGTTATTTCGCGT AAAACATCCGTCAAACAAACGCTGATTAAT 

¿Como hacerlo?

awk al rescate!

 $ awk -F: -v RS=">" 'NR==FNR{n=split($0,t,"\n"); for(i=1;i file}' index file $ head g*.txt ==> g000011.txt <== GTGTACGCTATGGCGGGTAATTTTGCCGAT ==> g000012.txt <== GTGTACGCTATGGCGGGTAATTTTGCCGAT CTGACAGCTGTTCTTACACTGGATTCAACC CTGACAGCTGTTCTTACACTGGATTCAACC ==> g027092.txt <== ATGAGCCTGATTATTGATGTTATTTCGCGT AAAACATCCGTCAAACAAACGCTGATTAAT 

Explicación

NR==FNR{n=sp... bloque analiza el primer archivo y crea una tabla de búsqueda

$2 in a{file=$2".txt"; Si el registro actual está en la tabla de búsqueda, establezca un nombre de archivo con la clave y la extensión txt

sub(/[^\n]+\n/,"") borra la línea del encabezado

print > file e imprimir con el nombre de archivo especificado.