bash - 替换多 fasta 文件 awk 的标题
问题描述
我正在尝试使用 awk 从多 fasta 文件中更改标题。
我的文件如下所示:
>NS500106:288:HGHTHAFXY:1:11101:16650:2011:CTATAC;size=206083;
GTACAACCTCCAGGAAATCGTGCCCGGCAGCGTGTGGATGGAGAGGGACGTG
>NS500106:288:HGHTHAFXY:1:11101:1149:1903:CTATAC;size=19175;
CAGCGAGAGCGAGACGCAGCCGGTGAACCGCGTGGCGTACAACGTCGGCGGGCAGATGGCCACCAACAACCAGAGCTCCA
CCACTGCCCCCGCGACCGGCACGTACAACCTCCAGGAAATCGTGCCCGGCAGCGTGTGGATGGAGAGGGACGTG
我正在使用这个命令:
awk '/[^;]*/{print "Variant_" ++i; next} {print}' < input.fasta > output.fasta
其中,/[^;]*/
匹配到第一次出现分号的行,并将标题的匹配部分替换为 Variant_1、Variant_2 等。
上述命令将整个标题更改为 Variant_1 等等,并且也不打印序列行。
我该如何解决这个问题?
我想要的输出如下:
Variant_1;size=206083;
GTACAACCTCCAGGAAATCGTGCCCGGCAGCGTGTGGATGGAGAGGGACGTG
Variant_2;size=19175;
CAGCGAGAGCGAGACGCAGCCGGTGAACCGCGTGGCGTACAACGTCGGCGGGCAGATGGCCACCAACAACCAGAGCTCCA
CCACTGCCCCCGCGACCGGCACGTACAACCTCCAGGAAATCGTGCCCGGCAGCGTGTGGATGGAGAGGGACGTG
解决方案
其中,/[^;]*/ 匹配直到第一次出现分号的行,并将标题的匹配部分替换为 Variant_1、Variant_2 等。
不,这是错误的。它处理包含零个或多个非分号字符的行(例如所有行)并打印行号Variant_n
在哪里n
。{print}
部分永远达不到。
这是我的方法:
$ awk 'BEGIN{FS=OFS=";"}NF>1{$1="Variant_"++i}1' file
Variant_1;size=206083;
GTACAACCTCCAGGAAATCGTGCCCGGCAGCGTGTGGATGGAGAGGGACGTG
Variant_2;size=19175;
CAGCGAGAGCGAGACGCAGCCGGTGAACCGCGTGGCGTACAACGTCGGCGGGCAGATGGCCACCAACAACCAGAGCTCCA
CCACTGCCCCCGCGACCGGCACGTACAACCTCCAGGAAATCGTGCCCGGCAGCGTGTGGATGGAGAGGGACGTG
推荐阅读
- tomcat - 无法在 Tomcat 10 上运行 JSF 应用程序
- puppeteer - Puppeteers 页面中的可组合函数。评估
- soap - Amadeus,Node JS soap 请求使用生产密钥但不使用测试密钥
- python - 与 h5py 和 create_dataset 相关的问题
- typescript - 使用带有 @usedapp 和 @ethersproject/contracts 的智能合约的奇怪错误
- list - 太多信息
- apache-camel - 骆驼http4 websphere sslcontextparameters
- jenkins-plugins - Jenkins 插件 UI 表单:在 Jelly 文件中,如何将其他字段传递给自动完成 url 以进行文本框输入?
- python - RNN 模型错误:“ValueError:此模型尚未构建。”
- node.js - 角度模块可以具有较低角度版本的 peerDependency 吗?