我正在尝试用 awk 编辑一个 fastq 文件。
@someheader example fastq file
TGTACTTAGAGAAGCGC
+
BDDADHHIHHHIICHIG
@nextheader
CCGTAACCTGGGCAGTG
+
DDDDDHIIIIIIIIIII
我想要实现的是:
- 查找以下正则表达式: /AGATCGGAAG[ATGC]{0,24}$/ - 如果可能,仅在实际可能找到的行中(例如第 2、6、10 行,x+2%4=0 基本上)
- 如果找到,删除匹配项
- 然后在当前行之后的2行末尾删除相同数量的字符
到目前为止,根据正则表达式编辑一行对我来说没有问题,我使用:
awk '{ gsub(/AGATCGGAAG[ATGC]{0,24}$/, ""); print RLENGTH }'
但我不知道如何在 2 行后删除相同数量的字符。我非常缺乏经验,才开始学习 awk,所以欢迎任何帮助。
问候
编辑:这是一个包含上述模式的示例
@HWI-ST558:329:H3K2GBCXX:1:1101:5408:2985 1:N:0:ATCACG
CCTCCCGGTCGGTGCTGAGAGAGACTGGGCTCTCTGGAACTCCACCACCGAGATCGGAAGAG
+
HHHIIIIHDHIIIHIIGHHHIHFHHCHHIE?GHHGHF?GECFEEHFHHHCHDHHHFEEHHHH
这应该是输出:
@HWI-ST558:329:H3K2GBCXX:1:1101:5408:2985 1:N:0:ATCACG
CCTCCCGGTCGGTGCTGAGAGAGACTGGGCTCTCTGGAACTCCACCACCG
+
HHHIIIIHDHIIIHIIGHHHIHFHHCHHIE?GHHGHF?GECFEEHFHHHC
该文件包含 4000 万个这样的条目,其中约 250k 包含模式