我有以下格式的多个文件。这个有3个序列(所有文件中的序列数不同,但总是以“。”结尾),每个序列有40个位置,如第一行中的数字所示。在各行的开头(第一行除外),有序列的名称:
3 40 00076284. ATGTCTGTGG TTCTTTAACC 00892634. TTGTCTGAGG TTCGTAAACC 00055673. TTGTCTGAGG TCCGTGAACC GCCGGGAACA TCCGCAAAAA ACCGTGAAAC GGGGTGAACT TCCCCCGAAC TCCCTGAACG
我需要将其转换为以下格式,即序列是连续的,没有空格也没有\ n,并且在其名称后的新行中。唯一应保留的空格是第一行中的两个数字之间。 >
3 40 00076284. ATGTCTGTGGTTCTTTAACCGCCGGGAACATCCGCAAAAA 00892634. TTGTCTGAGGTTCGTAAACCACCGTGAAACGGGGTGAACT 00055673. TTGTCTGAGGTCCGTGAACCTCCCCCGAACTCCCTGAACG
试图通过sed删除空格和\ n,但不知道如何在第一行之后应用它,以及如何避免形成一个大行。
谢谢
我有以下格式的多个文件。这个有3个序列(序列的数量在所有文件中都不同,但是总是以“。”结尾),每个序列有40个位置,如第一个...
这里是一个shell脚本,可以提供您所需的内容:
head -1 input
awk '
NR == 1 { sequences = $1 ; positions = $2 ; next }
{
if ( $1 ~ /^[0-9]/ ) {
sid = $1 ; $1 = "" ; sequence_name[ NR - 1 ] = sid
sequence[ NR - 1 ] = $0
} else {
sequence[ ( NR - 1 ) % ( sequences + 1 ) ] = sequence[ (NR-1) % ( sequences + 1 ) ] " " $0
}
}
END {
for ( x = 1 ; x <= length( sequence_name ) ; x++ )
{
print sequence_name[x]
print sequence[x]
}
}' input | tr -d ' '
我认为这应该可行,但是我的输出会更长,因为如果我实际上合并了所有最后的“孤立”序列,我会得到更长的一行。
记住空行的位置,并将空行之前的行与之后的行合并: