【发布时间】:2015-06-03 19:48:18
【问题描述】:
我正在尝试使用 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 包含模式
【问题讨论】:
-
请展示一些实际包含该模式的示例数据。
-
也许匹配功能会有所帮助。它将 RSTART 和 RLENGTH 设置为与某个正则表达式匹配的字符串部分的开始索引和长度。 RLENGTH 会告诉你匹配了多少个字符,你可以将它保存在一个变量中:
标签: linux bash shell awk fastq