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

移除制表符分隔文件中的单独点号但保留小数

移除制表符分隔数据中单独的点号(保留小数点)

你有如下制表符分隔的数据:

#chr    pos     ref     alt     af_alt  filter  an
22      10510033        T       C       .       AC0;AS_VQSR     0
22      10510061        A       T       0       AC0     2
(non-dot lines snipped)
22      10510286        G       A       0       AC0;AS_VQSR     1598
22      10510286        G       T       0.00125156      AS_VQSR 1598

需求是移除每一列里单独的点号(比如af_alt列的.),但保留小数中的点(比如最后一行的0.00125156)。

你之前尝试的命令:

awk 'BEGIN {OFS=FS="    "} {gsub(/^\.$/,"",$1)}1'

这个命令没生效的原因有两个:

  • 只针对第1列($1)做处理,而需要清理的点号在其他列(比如示例里的第5列)
  • 用四个空格作为分隔符,但实际数据是制表符分隔,空格数可能不一致导致列识别错误

正确的解决命令

用下面的AWK命令可以实现需求:

awk 'BEGIN {FS=OFS="\t"} {for(i=1;i<=NF;i++) if($i == ".") $i=""}1'

命令说明:

  1. BEGIN {FS=OFS="\t"}:指定输入和输出的分隔符都是制表符,保证列处理精准
  2. for(i=1;i<=NF;i++):遍历每一行的所有列
  3. if($i == ".") $i="":判断当前列是否是单独的点号,是的话就置为空字符串
  4. 1:AWK里的简写,代表打印处理后的整行

处理后的效果示例

#chr    pos     ref     alt     af_alt  filter  an
22      10510033        T       C               AC0;AS_VQSR     0
22      10510061        A       T       0       AC0     2
(non-dot lines snipped)
22      10510286        G       A       0       AC0;AS_VQSR     1598
22      10510286        G       T       0.00125156      AS_VQSR 1598

可以看到单独的点号已经被移除,小数里的点完全保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:31:06