bash - 从矩阵计算元素平均

标签 bash sed awk

我有一组存储在文本文件中的矩阵。我想计算一个输出矩阵,该输出矩阵由输入矩阵的逐元素平均值产生。举例说明如下:

cat file1.txt
Item0 Item1
Item0 1.01456e+06 5
Item1 2 12.2


cat file2.txt
Item0 Item1
Item0 1.0274e+06 6
Item1 0 14.5


cat output.txt
Item0 Item1
Item0 1020980 5.5
Item1 1 13.35

请注意,输入矩阵中的某些值采用工程符号。 欢迎所有建议!

最佳答案

awk -v row=2:3 -v col=2:3 -v num=2 '

BEGIN {
    split(row, r, ":")
    split(col, c, ":")
    n = num
}

r[1]<=FNR && FNR<=r[2] {
    for(i=c[1];i<=c[2];i++)
    {
        m[FNR,i]+=$i
    }
}

END {
    for(i=r[1];i<=r[2];i++)
    {
        for(j=c[1];j<=c[2];j++)
        {
            printf("%f\t", m[i,j]/n)
        }
        print ""
    }
}' file{1,2}.txt

1020980.000000  5.500000
1.000000        13.350000

关于bash - 从矩阵计算元素平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9786210/

相关文章:

linux - 如何使用 awk 打印第三列值等于 "0"而不是 0 的所有行?

Bash + sed/awk/cut 删除第 n 个字符

bash - sed 反向引用和命令插值

javascript - 无法运行 Node app.js 文件

git - 从本地存储库中已经存在的本地文件创建远程存储库

linux - 通过搜索另一个文件从文件中删除匹配段落

bash - "Git Bash here"不保留 session 之间的 bash 历史记录

bash - 使用 find、wc 和 sed 来计算行数

linux - 通过 sed 查找变量模式匹配并删除行

linux - 替换文件每一行中的每个第二个单词实例