修改行名称以避免在终端

时间:2015-06-24 15:53:17

标签: unix terminal bioinformatics

我有两个包含生物DNA序列数据的文件。这些文件中的每一个都是python脚本的输出,该脚本基于序列开始处的DNA条形码将每个DNA序列分配给样品ID。其中一个.txt文件的输出如下所示:

>S066_1 IGJRWKL02G0QZG orig_bc=ACACGTGTCGC new_bc=ACACGTGTCGC bc_diffs=0
TTAAGTTCAGCGGGTATCCCTACCTGATCCGAGGTCAACCGTGAGAAGTTGAGGTTATGGCAAGCATCCATAAGAACCCTATAGCGAGAATAATTACTACGCTTAGAGCCAGATGGCACCGCCACTGATTTTAGGGGCCGCTGAATAGCGAGCTCCAAGACCCCTTGCGGGATTGGTCAAAATAGACGCTCGAACAGGCATGCCCCTCGGAATACCAAGGGGCGCAATGTGCGTCCAAAGATTCGATGATTCACTGAATTCTGCAATTCACATTACTTATCGCATTTCGCAGCGTTCTTCATCGATGACGAGTCTAG
>S045_2 IGJRWKL02H5XHD orig_bc=ATCTGACGTCA new_bc=ATCTGACGTCA bc_diffs=0
CTAAGTTCAGCGGGTAGTCTTGTCTGATATCAGGTCCAATTGAGATACCACCGACAATCATTCGATCATCAACGATACAGAATTTCCCAAATAAATCTCTCTACGCAACTAAATGCAGCGTCTCCGTACATCGCGAAATACCCTACTAAACAACGATCCACAGCTCAAACCGACAACCTCCAGTACACCTCAAGGCACACAGGGGATAGG

第一行是序列ID,DNA序列中的第二行。 ID的第一部分中的S_066表示序列来自样本066,而_1表示它是文件中的第一个序列(不是S_066本身的第一个序列)。由于使用的DNA测序技术的细微差别,我需要从原始测序文件生成这样的两个文件,结果是输出,其中我有两个这样的文件,然后我使用cat来合并在一起。到目前为止一切都很好。

我的工作流程中的下一个下游步骤不允许相同的样本名称。现在它得到了一半,错误和关闭,因为它遇到了一些相同的序列ID。因此,必须是两个文件中的第400个序列属于同一样本或其他东西,生成相同的样本ID(即两个文件可能都有S066_400)。

我想要做的是使用一些代码在_之后立即插入第二个文件中每隔一行的一个数字(1000 ,, 4971,无论如何),从第一行开始。通过这种方式,ID将不再混淆,我可以继续。因此,它会涵盖S066_2S066_24971S066_49712。部分问题在于ID的长度可能是变化的,因此它可以以S066_49BBT1_开头。

1 个答案:

答案 0 :(得分:1)

尝试:

awk '/^\>/ {$1=$1 "_13"} {print $0}' filename > tmp.tmp
mv tmp.tmp filename