使用字符串本身将标头添加到字符串

时间:2015-09-21 21:34:42

标签: awk

我想在输入字符串中添加标题。标题应为>,后面紧跟字符串和字符串后用_分隔的数字 要添加标题我使用了awk '{print ">"$0;print}'但是我不知道如何添加数字。

输入:

CTTCTATGATGAATTTGATTGCATTGATCGTCTGACATGATAATGTATTT  2
AGAACGAAAGTCGGAGGTTCGAAGACGATC   14
TACCCTGTAGAACCGAANTTGT   1
TCCCTGTGGTCTAGTGGTTAGGATTCTGCGCTCTCACCGCCGCGGCCCGGG     2
GGGCCAGGATGAAACCTAATTTGAGTGGCCATCCATGGATGAGAAATGCGG 4
TAATACGGCCGGGTAATGATGGA 0
CCAGATGATGAACTTATTGACGGGCGGACAGAAACTGTGTGCTGATTGTCA 7240
CGCCCGATCTCGTCTGATCTCG  34
GCAGGGGTGGTTCAGTGGTAGAATTCTCGCC 3

输出:

>CTTCTATGATGAATTTGATTGCATTGATCGTCTGACATGATAATGTATTT_2
 CTTCTATGATGAATTTGATTGCATTGATCGTCTGACATGATAATGTATTT
>AGAACGAAAGTCGGAGGTTCGAAGACGATC_14
 AGAACGAAAGTCGGAGGTTCGAAGACGATC
....

1 个答案:

答案 0 :(得分:2)

$ awk '{printf ">%s_%s\n %s\n",$1,$2,$1;}' file
>CTTCTATGATGAATTTGATTGCATTGATCGTCTGACATGATAATGTATTT_2
 CTTCTATGATGAATTTGATTGCATTGATCGTCTGACATGATAATGTATTT
>AGAACGAAAGTCGGAGGTTCGAAGACGATC_14
 AGAACGAAAGTCGGAGGTTCGAAGACGATC
>TACCCTGTAGAACCGAANTTGT_1
 TACCCTGTAGAACCGAANTTGT
>TCCCTGTGGTCTAGTGGTTAGGATTCTGCGCTCTCACCGCCGCGGCCCGGG_2
 TCCCTGTGGTCTAGTGGTTAGGATTCTGCGCTCTCACCGCCGCGGCCCGGG
>GGGCCAGGATGAAACCTAATTTGAGTGGCCATCCATGGATGAGAAATGCGG_4
 GGGCCAGGATGAAACCTAATTTGAGTGGCCATCCATGGATGAGAAATGCGG
>TAATACGGCCGGGTAATGATGGA_0
 TAATACGGCCGGGTAATGATGGA
>CCAGATGATGAACTTATTGACGGGCGGACAGAAACTGTGTGCTGATTGTCA_7240
 CCAGATGATGAACTTATTGACGGGCGGACAGAAACTGTGTGCTGATTGTCA
>CGCCCGATCTCGTCTGATCTCG_34
 CGCCCGATCTCGTCTGATCTCG
>GCAGGGGTGGTTCAGTGGTAGAATTCTCGCC_3
 GCAGGGGTGGTTCAGTGGTAGAATTCTCGCC

如何运作

awk脚本由一个命令组成:

printf ">%s_%s\n %s\n",$1,$2,$1

默认情况下,awk根据空白区域将输入行拆分为字段。因此,例如,对于第一行,字段1为CTTCTATGATGAATTTGATTGCATTGATCGTCTGACATGATAATGTATTT,字段2为2printf允许我们将输入重新排列为所需的格式。对于每个输入行,写入两行。第一个格式>%s_%s\n写入>后跟字段1,后跟_,后跟字段2,后跟换行符。第二个输出行的格式是%s\n,它输出一个空格,后跟字段1,后跟换行符。