我有一个包含以下信息形式的文件:
>scaffold1|size69534
ACATAAGAGSTGATGATAGATAGATGCAGATGACAGATGANNGTGANNNNNNNNNNNNNTAGAT
>scaffold2|size68281
ATAGAGATGAGACAGATGACAGANNNNAGATAGATAGAGCAGATAGACANNNNAGATAGAG
>scaffold3|size67203
ATAGAGTAGAGAGAGAGTACAGATAGAGGAGAGAGATAGACNNNNNNACATYYYYYYYYYYYYYYYYY
>scaffold4|size66423
ACAGATAGCAGATAGACAGATNNNNNNNAGATAGTAGACSSSSSSSSSS
等等
但是我想序列中有些异常,所以我要在支架后的所有行中grep所有不是A,C,T,G或N的字母(我只想搜索其中的行)该序列不在> scaffold-size)行中。
在上面的示例中,它将在scaffold3和scaffold 4中的SSSSSSSSSSSSSSS之后grep YYYYYYYYYYYYYYYYYY grep
。
谢谢
假设您不仅仅需要知道哪些序列包含无效字符-您还想知道每个序列属于哪个支架。这可以做到;如何执行取决于您所需的确切输出格式,还取决于数据的确切结构。
仅作说明,我将做以下简化假设:“序列”只能包含大写字母(可以是有效字母或无效字母-但不能有标点符号或数字等);并且标签(以开头的行>
)不包含任何大写字母。注意-如果序列仅包含字母,那么对文件进行预处理以将序列转换为全大写字母并将标签转换为全小写字母并不太难,因此下面的解决方案仍然适用。
在GREP的某些版本中,无效字符将以不同的颜色显示(请参见链接的图像)。我觉得这很有帮助。
grep --no-group-separator -B 1 '[BDEFHIJKLMOPQRSUVWXYZ]' input_file
输出:
>scaffold1|size69534
ACATAAGAGSTGATGATAGATAGATGCAGATGACAGATGANNGTGANNNNNNNNNNNNNTAGAT
>scaffold3|size67203
ATAGAGTAGAGAGAGAGTACAGATAGAGGAGAGAGATAGACNNNNNNACATYYYYYYYYYYYYYYYYY
>scaffold4|size66423
ACAGATAGCAGATAGACAGATNNNNNNNAGATAGTAGACSSSSSSSSSS
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句