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

如何用awk保留浮点数不变,为整数添加.0后缀?

解决方案:保留CSV原有小数精度,为整数补全.0格式

问题分析

现有CSV文件,第一列为非数值字段,其余列均为无科学计数法的整数或浮点数。需求是将所有整数转为x.0格式,同时完整保留原有浮点数的精度(如333.3333保持不变)。原有awk命令使用%f会截断浮点数精度,%.1f会强制统一为一位小数,均不符合要求。

实现脚本

通过awk正则匹配判断字段是否为纯整数,仅对整数追加.0,浮数字段保持原样:

#!/bin/bash
LC_NUMERIC=C
awk 'BEGIN{FS=OFS=","} NR>1{for(i=2;i<=NF;i++){if($i !~ /\./) $i = $i ".0"}}1' input.csv > output.csv

脚本说明

  • BEGIN{FS=OFS=","}:提前设置输入输出分隔符为逗号,避免每行重复配置
  • NR>1:跳过第一行表头,仅处理数据行
  • for(i=2;i<=NF;i++):遍历第2列到最后一列(跳过第一列非数值字段)
  • if($i !~ /\./):判断当前字段是否不含小数点(即纯整数)
  • $i = $i ".0":为纯整数字段追加.0
  • 1:awk简写语法,用于打印所有行

示例验证

输入文件input.csv

gene_name,VarXCRep.1,VarXCRep.2,VarXCRep.3,VarX1Rep.1,VarX1Rep.2,VarX1Rep.3
Soltu.DM.01G000010,360.7000522,361.5910696,333.0843759,395.2279977,386.8290979,377.756613
Soltu.DM.01G000070,2,540,0,0,1.83331326,0

输出文件(符合期望)

gene_name,VarXCRep.1,VarXCRep.2,VarXCRep.3,VarX1Rep.1,VarX1Rep.2,VarX1Rep.3
Soltu.DM.01G000010,360.7000522,361.5910696,333.0843759,395.2279977,386.8290979,377.756613
Soltu.DM.01G000070,2.0,540.0,0.0,0.0,1.83331326,0.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 11:27:33