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

如何将file1所有数值除以file2的平均值乘2后写入新文件file3?

实现方案

以下提供两种可直接运行的通用方案,按需选择即可。


方案1:Shell命令行(适合Linux/macOS/Windows WSL环境)

直接在file1、file2所在目录执行以下命令即可生成符合要求的file3:

# 从file2提取平均数值,自动兼容等号后空格数量不固定的情况
avg=$(awk '/Average/{for(i=1;i<=NF;i++) if($i~/^[0-9]+\.[0-9]+$/) print $i}' file2)
# 写入表头
echo "ploidy" > file3
# 逐行计算结果并追加,自动跳过空行、非数值行(比如示例里的省略号)
awk -v average="$avg" '{if($1~/^[0-9.]+$/) printf "%.11f\n", ($1/average)*2}' file1 >> file3

方案2:Python脚本(全平台通用,Windows/macOS/Linux均可运行)

  1. 在file1、file2所在文件夹新建文本文件,重命名为cal.py,写入以下内容:
# 读取file2中的平均值参数
with open("file2", "r", encoding="utf-8") as f2:
    avg = None
    for line in f2:
        if line.startswith("Average"):
            avg = float(line.split("=")[-1].strip())
            break

# 逐行计算并写入结果到file3
with open("file1", "r", encoding="utf-8") as f1, open("file3", "w", encoding="utf-8") as f3:
    f3.write("ploidy\n")
    for line in f1:
        line = line.strip()
        if not line:
            continue
        # 自动跳过非数值行,避免报错
        try:
            num = float(line)
        except ValueError:
            continue
        res = (num / avg) * 2
        # 默认保留11位小数和示例格式对齐,可按需修改数字调整小数位数
        f3.write(f"{res:.11f}\n")
  1. 打开终端/命令提示符,进入当前文件所在目录,执行python cal.py即可生成目标文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:09:10