linux - 如何通过剪切其中的某些部分并使用 linux 命令行保留序列的主要文本来编辑 fasta 序列中的标题?
问题描述
我有一个名为 fasta1.fasta 的多 fasta 文件,其中包含序列及其 ID。我想要的是剪切具有ID的序列的标题并将其减少为仅包含序列的ID登录号。我使用命令行grep '>' fasta1.fasta | cut -d " " -f 1
从标题中剪切了我想要的部分,但我得到的输出是 ID 登录号,没有其余的序列。我的序列如下所示:
>tr|Q8IBQ5|Q8IBQ5_PLAF7 40S ribosomal protein S10, putative OS=Plasmodium falciparum (isolate 3D7) OX=36329 GN=PF3D7_$
MDKQTLPHHKYSYIPKQNKKLIYEYLFKEGVIVVEKDAKIPRHPHLNVPNLHIMMTLKSL
KSRNYVEEKYNWKHQYFILNNEGIEYLREFLHLPPSIFPATLSKKTVNRAPKMDEDISRD
VRQPMGRGRAFDRRPFE
>tr|Q8IEB1|Q8IEB1_PLAF7 TBC domain protein, putative OS=Plasmodium falciparum (isolate 3D7) OX=36329 GN=PF3D7_132020$
MEYKLEFLSYLLIFKKKNERISKFDEQIKTCINIFEKSIINESDLKYLFERNILDMNPGV
RSMCWKLALKHLSLDSNKWNTELIEKKKLYEEYIKSFVINPYYSCVDNKKKEFVKETEKE
PKGKNMKDEYIEYNLDRNKTYYHKDDSLLKLQNDNNTKQMDYLEDEKYSSMDDECSEDNW
我得到的输出是:
>tr|Q8IBQ5|Q8IBQ5_PLAF7
>tr|Q8IEB1|Q8IEB1_PLAF7
虽然所需的输出是:
>tr|Q8IBQ5|Q8IBQ5_PLAF7
MDKQTLPHHKYSYIPKQNKKLIYEYLFKEGVIVVEKDAKIPRHPHLNVPNLHIMMTLKSL
KSRNYVEEKYNWKHQYFILNNEGIEYLREFLHLPPSIFPATLSKKTVNRAPKMDEDISRD
VRQPMGRGRAFDRRPFE
>tr|Q8IEB1|Q8IEB1_PLAF7
EYKLEFLSYLLIFKKKNERISKFDEQIKTCINIFEKSIINESDLKYLFERNILDMNPGV
RSMCWKLALKHLSLDSNKWNTELIEKKKLYEEYIKSFVINPYYSCVDNKKKEFVKETEKE
PKGKNMKDEYIEYNLDRNKTYYHKDDSLLKLQNDNNTKQMDYLEDEKYSSMDDECSEDNW
任何帮助将不胜感激。谢谢你。
解决方案
变体 1:
sed '/^>/s/ .*//'
变体 2:
perl -pe 's/ .*// if /^>/'
也就是说,在所有以 开头的行中>
,删除第一个空格之后(包括第一个空格)的所有内容。
推荐阅读
- apache-spark - 如何在 Spark 中找到 2 个不同数据帧之间的优化连接
- ios - iOS - 通过本地推送通知触发通知服务扩展?
- typescript - Firebase 使用统计数据似乎被夸大了,我想了解为什么以下可观察到的结果会导致超过 70 次读取
- python - 从具有张量流概率的分布中采样时,张量是不可散列的错误(在 colab 上)
- javascript - 从角度的反应形式中获取预先填充的数据
- excel - 索引匹配excel多个条件
- continuous-integration - ZAP 的 GitLab CI 实现
- c# - 使用复合键 ASP.NET Web API 选择结果集(过滤器)
- r - R计划自动包更新
- python - matplotlib 表格中单元格内的文本