0

我有一个 fastq 格式的数据:

@HISEQ:157:C11RCACXX:6:1101:1522:2491 2:N:0:CGTACG
GTGCCNNNNNNNNNNNNNNNNNNNNNNNTGCGNNNNNNNNNNNNNNCNNGCAGATACTCGTANNNNNNNNNGNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
+
@BCFF###########################################################################
#####################
@HISEQ:157:C11RCACXX:6:1101:1668:2494 2:N:0:CGTACG
TCTTTNNNNNNNNNNNNNNNNNNNNNNNATTGNNNNNNNNNNNNNNTTNTGTTTTACGGTTTNNNNNNNNGCNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
+
C@CFF###########################################################################
#####################
@HISEQ:157:C11RCACXX:6:1101:2557:2492 2:N:0:CGTACG
CCTCTNNNNNNNNNNNNNNNNNNNNNNNGTTGNNNNNNNNNNNNNNCNNCAACACACTCCTCNNNNNNNNGCNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
+
CCCFF###########################################################################
#####################

我想用“+”分割每个读取使用的 awk 命令,但它不起作用,是否有简单的命令与 see/awk 可以将其转换为 fasta 格式?

预期输出应该是

>HISEQ:157:C11RCACXX:6:1101:1522:2491 2:N:0:
CGTACGGTGCCNNNNNNNNNNNNNNNNNNNNNNNTGCGNNNNNNNNNNNNNNCNNGCAGATACTCGTANNNNNNNNNGNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
>HISEQ:157:C11RCACXX:6:1101:1668:2494 2:N:0:
CGTACGTCTTTNNNNNNNNNNNNNNNNNNNNNNNATTGNNNNNNNNNNNNNNTTNTGTTTTACGGTTTNNNNNNNNGCNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
>HISEQ:157:C11RCACXX:6:1101:2557:2492 2:N:0:
CGTACGCCTCTNNNNNNNNNNNNNNNNNNNNNNNGTTGNNNNNNNNNNNNNNCNNCAACACACTCCTCNNNNNNNNGCNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN

非常感谢!

4

2 回答 2

0
awk '((/@/&&$0!~/#/)||$0!~/#/)&&$0!~/\+/' your_file

测试如下:

> cat temp2
@HISEQ:157:C11RCACXX:6:1101:1522:2491 2:N:0:CGTACG
GTGCCNNNNNNNNNNNNNNNNNNNNNNNTGCGNNNNNNNNNNNNNNCNNGCAGATACTCGTANNNNNNNNNGNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
+
@BCFF###########################################################################
#####################
@HISEQ:157:C11RCACXX:6:1101:1668:2494 2:N:0:CGTACG
TCTTTNNNNNNNNNNNNNNNNNNNNNNNATTGNNNNNNNNNNNNNNTTNTGTTTTACGGTTTNNNNNNNNGCNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
+
C@CFF###########################################################################
#####################
@HISEQ:157:C11RCACXX:6:1101:2557:2492 2:N:0:CGTACG
CCTCTNNNNNNNNNNNNNNNNNNNNNNNGTTGNNNNNNNNNNNNNNCNNCAACACACTCCTCNNNNNNNNGCNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
+
CCCFF###########################################################################
#####################
>
> nawk '((/@/&&$0!~/#/)||$0!~/#/)&&$0!~/\+/' temp2
@HISEQ:157:C11RCACXX:6:1101:1522:2491 2:N:0:CGTACG
GTGCCNNNNNNNNNNNNNNNNNNNNNNNTGCGNNNNNNNNNNNNNNCNNGCAGATACTCGTANNNNNNNNNGNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
@HISEQ:157:C11RCACXX:6:1101:1668:2494 2:N:0:CGTACG
TCTTTNNNNNNNNNNNNNNNNNNNNNNNATTGNNNNNNNNNNNNNNTTNTGTTTTACGGTTTNNNNNNNNGCNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
@HISEQ:157:C11RCACXX:6:1101:2557:2492 2:N:0:CGTACG
CCTCTNNNNNNNNNNNNNNNNNNNNNNNGTTGNNNNNNNNNNNNNNCNNCAACACACTCCTCNNNNNNNNGCNNNNNNNN
NNNNNNNNNNNNNNNNNNNNN
>
于 2013-10-23T08:41:54.953 回答
0

您可以尝试以下方法

awk -f conv.awk input.txt

input.txt您的输入数据文件在哪里,并且conv.awk

/@HISEQ/ { p=1; sub(/^@/,">"); sub(/:[^:]*$/,":"); print; next }
/^\+/ {p=0}
p==1 { print }
于 2013-10-23T08:18:08.493 回答