我有两个文件,我想将 file1 中的第 2 列与 file2 中的 NF 列相匹配。如果它们匹配,我想从 file2 输出整行,此外还有 file1 中的第 5 列和文件 1 中的第 5 列,最后与文件 2 中的 NF-2 列相乘。这些文件有不同的长度。
我有以下两种文件类型:
文件 1
xx name1 1 we freq1
xy name2 2 wer freq2
xz name3 3 werf freq3
文件2
..... value1 cv name1
..... value4 cvb name4
..... value3 cvb name3
..... value1 vbn name5
期望的输出
..... value1 cv name1 freq1 (freq1*value1)
..... value3 cvb name3 freq3 (freq3*value3)
我曾尝试使用 awk 执行此操作。
awk 'FNR==NR { 二[$0]++; 下一个 } { for (i in two) { split(i, one); if (one[2] == $NF) print $0, one[5], $(NF-2)*one[5] } }' file1 file2 > file3
它可以工作,但是效率极低,并且在一段时间后使我的comp崩溃。这些文件每个大约有 100,000 行。也许我应该为此使用 perl 或 python?或者有没有办法读取文件2?谢谢!