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

如何在Bash中将表格非首列数据除以同一个常量

处理表格数据:将指定列除以常量的方法

如果你需要把这组空格分隔的表格数据中,除第一列外的所有数值列除以同一个常量(比如3),这里有两种实用的解决方案,分别适合命令行快速处理和Python脚本灵活扩展的场景:

方法1:用awk命令行工具(高效快捷)

如果你的数据是每行4个字段(比如存储在input.txt文件中),直接用一行awk命令就能完成:

awk -v div=3 '{printf "%s", $1; for(i=2;i<=NF;i++) printf " %.3f", $i/div; print ""}' input.txt

如果你的原始数据是一串连续的字符串(就像你给出的那样),可以先分割成每行4个字段再处理:

echo "ERR843978.746 15 54 71 ERR843978.1705 7 45 51 ERR843978.5030 3 46 58 ERR843978.8855 15 48 52 ERR843978.4162 16 48 64 ERR843978.421 14 51 54 ERR843978.4599 12 60 46 ERR843978.5941 18 67 55 ERR843978.3780 15 56 70" | xargs -n4 | awk -v div=3 '{printf "%s", $1; for(i=2;i<=NF;i++) printf " %.3f", $i/div; print ""}'

关键说明:

  • -v div=3:定义要除以的常量,你可以随时改成需要的数值
  • xargs -n4:把连续的字符串自动分割成每行4个字段
  • %.3f:保留三位小数,和你示例里的格式完全匹配,要是想调整精度,把数字改成2(保留两位)或者4(保留四位)就行

方法2:用Python脚本(灵活可扩展)

如果后续需要添加复杂逻辑,或者对数据做更多处理,Python脚本会更合适:

处理文件中的每行数据

# 定义要除以的常量
DIVISOR = 3

# 读取输入文件(假设每行是一组4个字段的数据)
with open("input.txt", "r") as file:
    for line in file:
        # 分割每行的字段
        fields = line.strip().split()
        if not fields:
            continue
        # 处理第一列之外的字段,除以常量并保留三位小数
        processed_fields = [fields[0]] + [str(round(float(field)/DIVISOR, 3)) for field in fields[1:]]
        # 输出处理后的行
        print(" ".join(processed_fields))

直接处理字符串数据

如果你的数据是直接的字符串,也可以这样写:

data = "ERR843978.746 15 54 71 ERR843978.1705 7 45 51 ERR843978.5030 3 46 58 ERR843978.8855 15 48 52 ERR843978.4162 16 48 64 ERR843978.421 14 51 54 ERR843978.4599 12 60 46 ERR843978.5941 18 67 55 ERR843978.3780 15 56 70"
DIVISOR = 3

# 分割所有字段,每4个为一组
all_fields = data.split()
for i in range(0, len(all_fields), 4):
    group = all_fields[i:i+4]
    # 处理数值列
    processed = [group[0]] + [str(round(float(num)/DIVISOR, 3)) for num in group[1:]]
    print(" ".join(processed))

关键说明:

  • round(float(num)/DIVISOR, 3):确保计算结果保留三位小数,和示例格式一致
  • 这个脚本很容易扩展,比如可以加异常处理(防止遇到非数值的情况)、修改精度、输出到新文件等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:39:54