使用awk或sed将SAM文件发送给FASTA?

使用awk或sed将SAM文件发送给FASTA?,awk,sed,bioinformatics,fasta,Awk,Sed,Bioinformatics,Fasta,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

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,我对它们的工作原理感到非常困惑,所以如果有人能解释如何做到这一点,那将是令人惊讶的

谢谢,
Tom

使用
sed
删除以
@
开头的行,如下所示:
sed'/^@/d'
表示删除,
d
代表删除,斜杠之间的部分是要匹配的正则表达式(即,行的开头是
^
,后面是
)。然后只需使用如下替换设置其他行的格式:
sed的/^\([^]*\)[^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

使用
sed
删除以
@
开头的行,如下所示:
sed'/^@/d'
表示删除,
d
代表删除,斜杠之间的部分是要匹配的正则表达式(即,行的开头是
^
,后面是
)。然后只需使用如下替换设置其他行的格式:
sed的/^\([^]*\)[^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
用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 或

用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 或


您想要的输出是什么?更新了问题,给出了fatsa输出的示例。如果SAM和FASTA是标准格式,那么可能已经有工具可以实现这一点。它可能值得一看,它可能内置了一些有用的东西。问题是我想从一个正在创建SAM文件的程序中导出,但没有空间存储它,因此需要立即转换为fasta,如果你能明确说明一种格式是如何映射到另一种格式的(在我看来,格式非常不透明),这样做是可能的。目前,我看不出您的输入和输出是如何相互对应的(是吗?)。您想要的输出是什么?更新了问题,以给出fatsa输出的示例。如果SAM和FASTA是标准格式,则可能已经有工具来实现这一点。它可能值得一看,它可能内置了一些有用的东西。问题是我想从一个正在创建SAM文件的程序中导出,但没有空间存储它,因此需要立即转换为fasta,如果你能明确说明一种格式是如何映射到另一种格式的(在我看来,格式非常不透明),这样做是可能的。目前,我看不出您的输入和输出是如何相互对应的(是吗?)。谢谢,但当我使用代码时,这是给定的输出:>Rank10_clean_2213:4:1101:13998:2091 4*0**0 CAGCATCTGAGAGATGTAACCAAGTGGGCGCTTTTGCTTGCTTGCTTGCTGTCTCCAAGCTGAAGAGAGAGAGACTCGCGCCCGGAATCTCAGATCCCCGGCTACACAGATCCGGATCCGGATCCGGATGCATGCATGCATGGGAATGCATGCATGCGCTCATGGAGCTGCGCGCGCGCATGGAGCTGCGCGCGCGCGCATGCGCGCGCGCGCATGGAGCTGCGCGCGCGCGCATGCGCGCGCGCGCGCATGCGCGCGCGCATGCGCGCGCGCGCGCGCGCATGCGCGCGCGCGCGCATGCGCGCGCGCGCGCGCGCATGCGCGCGCGCGCGCGC>Rank10_clean_2213:4:1101:13998:2091 4*0**0 CAGCATATCTGAGAGATGTAACCAAGTGGGCGCTTTTTTGCTTGCTGTCTCCACTGGCTGAAGAGAATCGCGCGCCCGGATCCCCGGCTACACACACGCCCGGATCCCCGGATCCGGATCCGGATGCATCCTGGAATGCATCCGGATGCATGCTCATGGAGATGCATGCGCGCGCATGGAGCTGCGCGCGCGCGCATGGAGCTGCGCGCGCGCGCATGCGCGCGCGCGCGCATGCGCGCGCGCGCATGCGCGCGCGCGCGCGCATGCGCGCGCGCGCGCGCATGCGCGCGCGCGCGCGCATGCGCGCGCGCGCGCGCATGCGCGCGCGCGCGCGCGCGCGCGC,你能添加恶意代码行吗?您提供的输入是否遇到问题?这很奇怪,因为它可以在我的系统和您的输入上工作…谢谢您,但当我使用代码时,这是给定的输出:>Rank10_clean_2213:4:1101:13998:2091 4*0**0 CAGCATCTGAGAGATGTAACCAAGTGGGCGCTTTTGCTTGCTTGCTTGCTGTCTCCAAGCTGAAGAGAGAGAGACTCGCGCCCGGAATCTCAGATCCCCGGCTACACAGATCCGGATCCGGATCCGGATGCATGCATGCATGGGAATGCATGCATGCGCTCATGGAGCTGCGCGCGCGCATGGAGCTGCGCGCGCGCGCATGCGCGCGCGCGCATGGAGCTGCGCGCGCGCGCATGCGCGCGCGCGCGCATGCGCGCGCGCATGCGCGCGCGCGCGCGCGCATGCGCGCGCGCGCGCATGCGCGCGCGCGCGCGCGCATGCGCGCGCGCGCGCGC>Rank10_clean_2213:4:1101:13998:2091 4*0*0**0 CAGCATCTGAGAGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAAGATGAAGATGAAGATGAAGATGAAGATGAAGAGATGAAGAGATCCGGATCCGGATCCGCAGATCCGGTCAGATCCGCAGAGATCCGCGCGCGTA