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

如何修改FASTA文件中以>开头的行,截取指定前缀子串?

解决FASTA文件标题行截断问题

你的脚本报错是因为cut命令默认读取文件内容,而你直接把行文本当作参数传给它,它会把这段文本当成文件名去查找,自然找不到对应的文件。下面给你几种可行的解决方案:

方法1:用awk处理(最简洁高效)

awk天生适合处理这种结构化文本,一行命令就能搞定:

awk '/^>/ {split($0, parts, "_"); print parts[1]"_"parts[2]"_"parts[3]"_"parts[4]} !/^>/ {print}' file.txt
  • 逻辑:
    • 匹配以>开头的标题行,用_分割成数组parts,取前4个元素拼接输出;
    • 非标题行(序列行)直接原样输出。

方法2:修复你的bash循环

把行内容通过管道传给cut,而不是当作文件名,同时补上非标题行的输出逻辑:

while read -r line; do 
  if [[ $line = \>* ]]; then
    echo "$line" | cut -d_ -f1-4
  else
    echo "$line"
  fi
done < file.txt
  • 注意加上-r参数避免read解析转义字符,同时用echo "$line"把内容传给cut处理。

方法3:用sed正则替换

适合喜欢单行正则的场景:

sed -E 's/^>([^_]+_[^_]+_[^_]+_[^_]+)_.*/>\1/' file.txt
  • 逻辑:用正则捕获标题行中>后前4个_分割的部分,替换掉整个标题行,序列行不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:50:39