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

如何调整awk命令在文件开头新增标记列且不覆盖原有第一列

调整后的awk命令及说明

你原来的命令直接修改了$1的值,因此会覆盖原第一列内容。要将标记作为新首列添加,只需先计算标记值,再将其放在原整行前输出即可,同时注意保留GTF文件原生的制表符分隔格式,避免字段错位。

基础可用版本

awk 'BEGIN{FS=OFS="\t"} {tag="coding"; if($12 ~ /RNA|mir-/ || $3 == "pseudogene") tag="non-coding"; print tag, $0}' a.gene-pseudogene_all_dmel-all-r6.40.gtf

参数说明:

  • BEGIN{FS=OFS="\t"}:指定输入、输出的字段分隔符均为制表符,完全匹配GTF文件格式,不会打乱原有字段的分隔格式
  • 先给标记变量tag默认赋值为coding,满足判断条件时修改为non-coding,全程不会修改原有任何字段的内容
  • print tag, $0:先输出标记值,再输出原整行内容,标记自动成为新的第一列,原有所有列完整保留

兼容GTF注释行版本

如果你的文件开头有#开头的注释行,不想给注释行加标记,可使用以下版本:

awk 'BEGIN{FS=OFS="\t"} /^#/{print;next} {tag="coding"; if($12 ~ /RNA|mir-/ || $3 == "pseudogene") tag="non-coding"; print tag, $0}' a.gene-pseudogene_all_dmel-all-r6.40.gtf

该版本会直接原样输出所有注释行,仅对正常的数据行添加标记列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:39:02