修改行名以避免在终端中合并文件时出现冗余
modifying line names to avoid redundancies when files are merged in terminal
我有两个包含生物 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
第一行是序列号,第二行是DNA序列。 ID第一部分的S_066
表示序列来自样本066,_1
表示它是文件中的第一个序列(不是来自S_066
的第一个序列本身).由于所使用的 DNA 测序技术的细微差别,我需要从原始测序文件生成两个这样的文件,结果是我有两个这样的文件的输出,然后我使用 cat
来融合在一起。到目前为止一切顺利。
我工作流程中的下一个下游步骤不允许使用相同的样本名称。现在它进行到一半,出现错误并关闭,因为它遇到了一些相同的序列 ID。因此,这两个文件中的第 400 个序列一定属于同一个样本,或者生成相同的样本 ID(即两个文件可能有 S066_400
)。
我想做的是使用一些代码在第二个文件的每隔一行的 _
之后插入一个数字(1000、4971,等等),从第一行开始。这样 ID 就不会再混淆了,我可以继续了。因此,它将涵盖 S066_2
到 S066_24971
或 S066_49712
。部分问题在于 ID 的长度可能是可变的,因此它可能以 S066_
或 49BBT1_
开头。
尝试:
awk '/^\>/ {= "_13"} {print [=10=]}' filename > tmp.tmp
mv tmp.tmp filename
我有两个包含生物 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
第一行是序列号,第二行是DNA序列。 ID第一部分的S_066
表示序列来自样本066,_1
表示它是文件中的第一个序列(不是来自S_066
的第一个序列本身).由于所使用的 DNA 测序技术的细微差别,我需要从原始测序文件生成两个这样的文件,结果是我有两个这样的文件的输出,然后我使用 cat
来融合在一起。到目前为止一切顺利。
我工作流程中的下一个下游步骤不允许使用相同的样本名称。现在它进行到一半,出现错误并关闭,因为它遇到了一些相同的序列 ID。因此,这两个文件中的第 400 个序列一定属于同一个样本,或者生成相同的样本 ID(即两个文件可能有 S066_400
)。
我想做的是使用一些代码在第二个文件的每隔一行的 _
之后插入一个数字(1000、4971,等等),从第一行开始。这样 ID 就不会再混淆了,我可以继续了。因此,它将涵盖 S066_2
到 S066_24971
或 S066_49712
。部分问题在于 ID 的长度可能是可变的,因此它可能以 S066_
或 49BBT1_
开头。
尝试:
awk '/^\>/ {= "_13"} {print [=10=]}' filename > tmp.tmp
mv tmp.tmp filename