You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk或bash筛选含非A/U/C/G字符的FASTA序列?

问题修正说明

你原有代码的核心问题是正则逻辑错误:/AUGC/的匹配规则是查找是否存在连续的AUGC四个字符,完全不符合「检测是否存在AUCG以外字符」的需求。你需要使用字符集取反的正则语法实现需求。

正确实现代码

awk '/^>/{h=$0;getline s;if(s ~ /[^AUCG]/) print h"\n"s}' sample

逻辑说明

  • 匹配到以>开头的序列头行时,先将行内容存入变量h
  • 调用getline读取下一行的序列内容存入变量s
  • 用正则/[^AUCG]/判断:中括号内的^代表取反,即匹配所有不在A/U/C/G范围内的字符,只要匹配到就输出对应的序列头和序列内容

该代码在你提供的测试输入上运行可直接得到预期输出结果。


内容的提问来源于stack exchange,提问作者Caterina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:09:04