我需要在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
答案 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的行为,试图始终从左侧获取最大的部分