sed,在文本中间开始一个新行

时间:2015-08-31 16:11:44

标签: sed newline fasta

我需要在DNA核苷酸序列(a,c,g,t)的开头插入一个新行,该序列发生在该txt文件的行中间。我试图使用sed这样做。该行应插入标题之后,标题有多个标识符,以逗号和下划线分隔,并始终以数字结尾。 acgt序列长度各不相同。

计划:sed PROJECT:text_cmds-84

示例:

>AK353574,morex_contig_45194_1,474_0agtaacgctgtaatcaatgttgtgaataagacagtctgattcaacatgacatc
>AK353574,morex_contig_45194_1,474_118tgactcaactgtaatatctactgaagaactgaagggcgttagcaggatatgta
>AK353574,morex_contig_45194_1,474_236attcaggcaatgtaggcacaaaagtttccttgaggccgcaaaaaccatcttag

期望的输出:

>AK353574,morex_contig_45194_1,474_0
agtaacgctgtaatcaatgttgtgaataagacagtctgattcaacatgacatc
>AK353574,morex_contig_45194_1,474_118
tgactcaactgtaatatctactgaagaactgaagggcgttagcaggatatgta
>AK353574,morex_contig_45194_1,474_236
attcaggcaatgtaggcacaaaagtttccttgaggccgcaaaaaccatcttag

2 个答案:

答案 0 :(得分:0)

这可能适合你(GNU sed,也可能是其他seds):

sed 'G;s/\(.*[0-9]\)\(.*\)\(.\)$/\1\3\2/' file

追加换行符,然后使用模式匹配和反向引用在核苷酸序列之前插入换行符。

答案 1 :(得分:0)

Posix的:

sed 's/.*_[0-9]\{1,\}/&\
/' YourFile

GNU:

sed 's/.*_[0-9]+/&\n/' YourFile

使用sed的行为,试图始终从左侧获取最大的部分