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

如何用awk将多列数据文件乘以常数并保留小数,维持原行列结构

解决awk处理多列数据后保持行列结构的问题

你的问题出在没有添加列分隔符和行结束换行,导致所有输出挤在同一列。以下是修正后的awk命令,能保留原文件的行列结构,同时完成数据转换:

awk '{printf "%d", $1; for (i=2; i<=NF; i++) printf "   %.4f", $i*1000; print ""}' combined.txt > combined1.txt

命令说明:

  1. 保留第一列结构:用printf "%d", $1输出原第一列的整数(如果第一列需要参与计算,可改为printf "%.0f", $1*1或调整格式)
  2. 处理后续列:循环遍历第2到最后一列(i=2; i<=NF),每列计算$i*1000后,用" %.4f"格式输出(4位小数+前置空格分隔,匹配你的预期输出格式)
  3. 换行保持行结构:每行处理完后用print ""输出换行符,确保每行结果对应原文件的一行

自定义调整:

  • 若需修改小数位数:将%.4f改为%.3f(3位)或其他位数即可
  • 若需更换分隔符:把" %.4f"中的空格换成"\t"(制表符)或其他符号
  • 若第一列也需乘常数:比如第一列也要乘1000,可改为printf "%.4f", $1*1000

用你的示例数据测试,输出会完全匹配预期的行列格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:32:44