如何将一个文件的列乘以另一个文件的列?

如何将一个文件的列乘以另一个文件的列?

我需要您的帮助,将一个文件的列乘以另一个文件的列,其中两个文件具有相同的列数和行数。我希望脚本将第一个文件的第一列乘以第二个文件的第一列、第一个文件的第二列和第二个文件的第二列,依此类推。

这是我的示例数据和下面所需的输出

文件1

2 3 4 4 . . . 
5 6 7 8 . . .
. . . . . . .

文件2

3 4 8 10 . . . 
5 10 5 9 . . .
. . . . . . . 

所需的输出文件将是

文件1.文件2

6 12 32 40 . . . 
25 60 35 72 . . . 

答案1

这应该可以做到。请注意,它假设两个文件中的行具有相同的列数。

awk '
    {
            getline file2_line <"file2";
            split(file2_line, fields_from_file2);

            cur = 1;
            while ( cur <= NF )
            {
                    printf("%s ", $cur * fields_from_file2[cur]);
                    cur++;
            }

            printf("\n");
    }
    ' file1

答案2

或者:

paste file1 file2 | awk '{h=NF/2;for (i=1;i<=h;i++) $i=$i*$(i+h);NF=h};1'

(假设两个文件具有相同的列数和行数)

相关内容