如何将最多25列(这个数字可变)的文件乘以一个固定数字,并打印出3个小数的结果.

我试过了

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

这只打印第一列中的所有结果.只有一个包含所有计算值的大列.如何才能使它遵循与输入相同的行数和列数?

数据文件示例:

 0   8.4937e-005   0.0000e+000   -5.0721e-006   1.6484e-006   -1.7687e-006   1.8932e-006  3.9437e-007   
 1   8.5234e-005   0.0000e+000   -5.1815e-006   1.6891e-006   -1.8060e-006   1.9073e-006  3.9212e-007   
 2   9.5818e-005   0.0000e+000   -5.9843e-006   1.9090e-006   -2.0271e-006   1.9332e-006  4.6143e-007   
 3   1.0172e-004   0.0000e+000   -7.3778e-006   2.5445e-006   -2.3937e-006   1.9825e-006  4.4063e-007   
 

预期结果

0   0.0849  0.0000  -0.0051 0.0016  -0.0018 0.0019  0.0004
1   0.0852  0.0000  -0.0052 0.0017  -0.0018 0.0019  0.0004
2   0.0958  0.0000  -0.0060 0.0019  -0.0020 0.0019  0.0005
3   0.1017  0.0000  -0.0074 0.0025  -0.0024 0.0020  0.0004
4   0.1051  0.0000  -0.0087 0.0030  -0.0022 0.0018  0.0005

如果有任何建议,我将不胜感激!

推荐答案

我想你要找的东西是这样的:

awk '{
    printf "%3d", $1
    for (i=2; i<=NF; ++i) printf "%9.4f", $i*1000
    print ""
}' file

Linux相关问答推荐

为什么waitpid(2)可以指定非子进程?

如何让 Flutter 用鼠标拖动而不是滚轮滚动? (Linux)

在没有root访问权限的情况下安装zsh?

错误:命令gcc在 CentOS 上失败,退出状态为 1

Bash 变量:是否区分大小写?

Bash 命令 :(){ :|:& };: 将产生进程导致内核死亡.你能解释一下语法吗?

将 AWK 结果分配给变量

如何从命令行打开 Ubuntu Linux 上的 AVD 管理器?

将 CMake 项目导入 Eclipse CDT

如何在 shell 脚本中向文件中添加一行?

比较两个图像的 python/linux 方式

Windows 开发环境值得付出代价吗?

Linux命令将一个文件复制到多个文件

在 shell 脚本的 for 循环中迭代行而不是单词

如何获取 GNU Makefile 中使用的 shell 命令的退出状态?

如何使用终端打开-虚线文件名?

如何从目录复制内容而不是符号链接?

如何安排 tcpdump 在特定时间段内运行?

具有所有内核的 Gzip

Linux下Eclipse在哪里找eclipse.ini