あるファイルの列に別のファイルの列を掛ける方法は?

あるファイルの列に別のファイルの列を掛ける方法は?

1つのファイルの列と2つのファイルの列と行数が同じである別のファイルの列を掛けるのに役立ちます。スクリプトでは、最初のファイルの最初の列に2番目のファイルの1番目の列、1番目のファイルの2番目の列、2番目のファイルの2番目の列などを乗算したいと思います。

私のサンプルデータと希望の出力は次のとおりです。

ファイル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'

(2つのファイルの列と行数が同じであると仮定)

関連情報