修剪线条的第一个字符以匹配第二条线的长度

时间:2017-04-10 21:10:56

标签: text awk trim fastq

我正在玩一些fastq文件,从fastq序列的第二行修剪特定序列:

输入示例:

@D00733:159:CA65UANXX:8:1214:11297:78554
GTTTTACACAATTATACGGACTTTATCCGCTTTTGTGCCTCTTTAATTTC
+
BBCCCEGGGGGGGFGEGGGDGGGGGGGGGGGGGGFGGGGGGGGGGGGEGG
@D00733:159:CA65UANXX:8:1214:11297:78555
TATGATTAGATGCGGATTGATCTGATCGGGACTGATTTTTTTTAGGGATT
+
BBCCCEGGGGGGGFGEGGGDGGGGGGGGGGGGGGFGGGGGGGGGGGGEGG

我从序列中删除了子序列'TTATACGGACTTTATC'及之前的任何内容:

sed 's/^.*TTATACGGACTTTATC//' in.fastq > in2.fastq

结果如下:

@D00733:159:CA65UANXX:8:1214:11297:78554
CGCTTTTGTGCCTCTTTAATTTC
+
BBCCCEGGGGGGGFGEGGGDGGGGGGGGGGGGGGFGGGGGGGGGGGGEGG
@D00733:159:CA65UANXX:8:1214:11297:78555
TATGATTAGATGCGGATTGATCTGATCGGGACTGATTTTTTTTAGGGATT
+
BBCCCEGGGGGGGFGEGGGDGGGGGGGGGGGGGGFGGGGGGGGGGGGEGG

这可能是一种有效的方法来修剪条目(质量)中第4行的开头以匹配第2行(序列)的长度?每行由\ n个字符分隔,每个条目由4行(标识符,序列,+,质量)组成。

预期产出:

@D00733:159:CA65UANXX:8:1214:11297:78554
CGCTTTTGTGCCTCTTTAATTTC
+
GGGGGGGFGGGGGGGGGGGGEGG
@D00733:159:CA65UANXX:8:1214:11297:78555
TATGATTAGATGCGGATTGATCTGATCGGGACTGATTTTTTTTAGGGATT
+
BBCCCEGGGGGGGFGEGGGDGGGGGGGGGGGGGGFGGGGGGGGGGGGEGG

提前致谢!

1 个答案:

答案 0 :(得分:2)

$ awk 'NR%4==2{s=match($0,/TTATACGGACTTTATC/)+RLENGTH} NR%4~/[02]/{$0=substr($0,s)} 1' file
@D00733:159:CA65UANXX:8:1214:11297:78554
CGCTTTTGTGCCTCTTTAATTTC
+
GGGGGGGFGGGGGGGGGGGGEGG
@D00733:159:CA65UANXX:8:1214:11297:78555
TATGATTAGATGCGGATTGATCTGATCGGGACTGATTTTTTTTAGGGATT
+
BBCCCEGGGGGGGFGEGGGDGGGGGGGGGGGGGGFGGGGGGGGGGGGEGG