sam文件的示例如下:
@SQ SN:gi|669687444|gb|KJ769480.1| LN:1200
@SQ SN:gi|669687442|gb|KJ769479.1| LN:900
@SQ SN:gi|669687440|gb|KJ769478.1| LN:1162
@SQ SN:gi|669687438|gb|KJ769477.1| LN:1074
@SQ SN:gi|669687436|gb|KJ769476.1| LN:1194
@SQ SN:gi|669687434|gb|KJ769475.1| LN:1074
@SQ SN:gi|669687432|gb|KJ769474.1| LN:1194
@SQ SN:gi|669687430|gb|KJ769473.1| LN:1074
@SQ SN:gi|669687428|gb|KJ769472.1| LN:1194
@SQ SN:gi|669687426|gb|KJ769471.1| LN:1189
@SQ SN:gi|669687424|gb|KJ769470.1| LN:1074
@SQ SN:gi|669687422|gb|KJ769469.1| LN:370
@PG ID:bwa PN:bwa VN:0.7.10-r789 CL:bwa mem /ibers/ernie/home/thh32/Scratch/Hidden_virome/Against_NCBI_viral/Sweetspot/bwa_NCBI_viral_nucl test.fa
Rank10_clean_2213:4:1101:3636:2018 4 * 0 0 * * 0 0 AAACCATTCGCTTCCTTTAAATCTATCTGTTATTTCCCTTAAATAATTTGAACCATGCGAAGCAATATAAGGATTTAAGACGAAACAATTCTTTTCTCT * AS:i:0 XS:i:0
Rank10_clean_2213:4:1101:3508:2062 4 * 0 0 * * 0 0 TCGCTATGCTTACTCCAATGTGGCGTACCAGTGTGCGAAGCTGATGCGCAAACCACGGGAAAAGGAGAAACTCTATCGGTGGATCGTGGATATGGAATTCAAATCCGGTGAGATCCC * AS:i:0 XS:i:0
Rank10_clean_2213:4:1101:1470:2237 4 * 0 0 * * 0 0 GCGGAGCATATCCCCTTGCGTCCTGGACGGCGTGCCCGCATTCATGGGCGGCCACGGCCGCAGCTGCGATGGAATTCATCCCATACACGCTTTCTGAAAGGTTTACGGTCTTGCTCCTGGGATCG * AS:i:0 XS:i:0
Rank10_clean_2213:4:1101:1540:2114 4 * 0 0 * * 0 0 GCGCGCAAGGTCCCGCGGATACTGGTCTGCCATATCTCCAACCCGCCCCTTAAGCGTGATGACGAAATGATCTACCCGAAAAGCTCAGCCGGGTTCCATCCCGGCAACGACGCGCCGCG * AS:i:0 XS:i:0
通缉输出是:
>Rank10_clean_2213:4:1101:7988:2027
GCCATCTCCAACCTCACCACCGGTAGCGGCAACCAGATGAGCTACAACCTCATCGCCATCCTTTGCGGCTTGATCGCCATGGCCGTCACCGCAATCTGCGCTCACTACGGCAAAAAGACCGTCAGCTTAATCCCATTCGTCCTTGGCATGTGCGCCGGTTATGTCGCGGCC
>Rank10_clean_2213:4:1101:6459:2053
TCACCACTTATTGCATCACCATACACATCAGTTACTGTGATTGTTACTGTGATGTTACCATCGATAGAGGGGTTATAATCTGAACATTCAATGTTTGGTATACTTGTGCTTAACAAAGTAACATCAGATTTCAATGTGTCAATTCTGCTATCCCCTGTTTGAGTATTACTCCCCCAAACCT
CTGTATTCAAGTTACTAATCTTCGGTGTGACATCTCTGCTAATCACACTTGCCACA
>Rank10_clean_2213:4:1101:7962:2142
CGGTCCACCGAGAAAGGATGCTCCCTCAAAGCCTCAGATAGCGAAGGTGGAGACAGGACAAAAGAAGAAACCCCCCCCCCCACCCCCCCCC
>Rank10_clean_2213:4:1101:8018:2112
GTGAAACGCCTCGCCGACTCTCTCCGCCACCCGGTAATAGCCGTGGGTGTACGGATCAAACGCAATGGCGTCCACAAGAGACATATCGACCTTGTCACCGGCCATGACGCGCTCGTCTGCCGTGACATTGACGACCTTGCCGATGACGCCGAC
>Rank10_clean_2213:4:1101:2807:2211
TGAAAGTTGACATAGGAACCTGTGGAAGCATTGTAGTTAATGAGCGTTTTTTTTAAGTCATCAAAGTTATTTTTTAAGTTATGACGGCGGATATAATCCTGGAACTTGGGATTGACTATCCATTTATCAAAACACTGATCAAGAACAGTGCTTTGAATAAGCTCAGGTGAAGCATTGACTT
CAAATCCTGGCATAACACCTACAAGATAGCCATATTTCTCAAGTAATGCCT
我之前从未使用过sed或awk,我对它们的工作原理感到困惑,所以如果有人能解释如何做到这一点会很棒。
谢谢, 汤姆
答案 0 :(得分:3)
使用@
删除以sed d
开头的行,如下所示:sed '/^@/d'
d
代表删除,斜杠之间的部分是匹配的正则表达式(即开头)行^
后跟@
)。然后使用如下替换格式化其他行:sed 's/^\([^ ]*\)[^ATGC]*\([ATGC]*\)[ :*a-zA-Z0-9]*$/>\1\n\2/'
。此命令将在A,T,G或Cs序列之前粘贴换行符。并在原始行前添加>
。 \(\)
之间的部分是捕获的组,可以使用\1
或\2
替换,具体取决于捕获的组的索引。 sed命令将查找一行的开头,后跟一些非空格(即输出的奇数行)。然后,从下一个空格开始,它将寻找许多非AGTC字符,直到出现一串AGTC。我们将在一组(第2组)中捕捉到这个序列。在此序列之后,可以有多个空格,字母字符和诸如此类([ :*a-zA-Z0-9]
),直到该行的末尾匹配$
。我们现在只取第一组和第二组,并在它们之间粘贴换行符/\1\n\2/
。
现在你所要做的就是插入maxscore数据等。我似乎无法找到你从哪里得到这些信息。
假设输入位于名为sam
的文件中:
$ sed '/^@/d; s/^\([^ ]*\)[^ATGC]*\([ATGC]*\)[ :*a-zA-Z0-9]*$/>\1\n\2/' sam
>Rank10_clean_2213:4:1101:3636:2018
AAACCATTCGCTTCCTTTAAATCTATCTGTTATTTCCCTTAAATAATTTGAACCATGCGAAGCAATATAAGGATTTAAGACGAAACAATTCTTTTCTCT
>Rank10_clean_2213:4:1101:3508:2062
TCGCTATGCTTACTCCAATGTGGCGTACCAGTGTGCGAAGCTGATGCGCAAACCACGGGAAAAGGAGAAACTCTATCGGTGGATCGTGGATATGGAATTCAAATCCGGTGAGATCCC
>Rank10_clean_2213:4:1101:1470:2237
GCGGAGCATATCCCCTTGCGTCCTGGACGGCGTGCCCGCATTCATGGGCGGCCACGGCCGCAGCTGCGATGGAATTCATCCCATACACGCTTTCTGAAAGGTTTACGGTCTTGCTCCTGGGATCG
>Rank10_clean_2213:4:1101:1540:2114
GCGCGCAAGGTCCCGCGGATACTGGTCTGCCATATCTCCAACCCGCCCCTTAAGCGTGATGACGAAATGATCTACCCGAAAAGCTCAGCCGGGTTCCATCCCGGCAACGACGCGCCGCG
答案 1 :(得分:2)
使用awk的解决方案
awk '/^@/{ next; } { print ">"$1; print $10 }' input.sam
你得到了
>Rank10_clean_2213:4:1101:3636:2018 AAACCATTCGCTTCCTTTAAATCTATCTGTTATTTCCCTTAAATAATTTGAACCATGCGAAGCAATATAAGGATTTAAGACGAAACAATTCTTTTCTCT >Rank10_clean_2213:4:1101:3508:2062 TCGCTATGCTTACTCCAATGTGGCGTACCAGTGTGCGAAGCTGATGCGCAAACCACGGGAAAAGGAGAAACTCTATCGGTGGATCGTGGATATGGAATTCAAATCCGGTGAGATCCC >Rank10_clean_2213:4:1101:1470:2237 GCGGAGCATATCCCCTTGCGTCCTGGACGGCGTGCCCGCATTCATGGGCGGCCACGGCCGCAGCTGCGATGGAATTCATCCCATACACGCTTTCTGAAAGGTTTACGGTCTTGCTCCTGGGATCG >Rank10_clean_2213:4:1101:1540:2114 GCGCGCAAGGTCCCGCGGATACTGGTCTGCCATATCTCCAACCCGCCCCTTAAGCGTGATGACGAAATGATCTACCCGAAAAGCTCAGCCGGGTTCCATCCCGGCAACGACGCGCCGCG
来自文档sam format,如果你在第二列中有标记8是未编码序列,那就更好了
awk '/^@/{ next; }
{ if(and(int($2),8)){
next;
}
print ">"$1;
print $10 }' input.sam
或
awk '/^@/{ next; } and(int($2),8){next;} { print ">"$1; print $10 }' input.sam