我需要您的帮助,将一个文件的列乘以另一个文件的列,其中两个文件具有相同的列数和行数。我希望脚本将第一个文件的第一列乘以第二个文件的第一列、第一个文件的第二列和第二个文件的第二列,依此类推。
这是我的示例数据和下面所需的输出
文件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'
(假设两个文件具有相同的列数和行数)