如何将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均可运行)
- 在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")
- 打开终端/命令提示符,进入当前文件所在目录,执行
python cal.py即可生成目标文件。
内容的提问来源于stack exchange,提问作者itrylinux
相关产品推荐
相关产品推荐

