2 つのファイルがあり、file1 の列 2 を file2 の列 NF と一致させたいと考えています。それらが一致する場合、file2 の行全体を出力したいと思います。さらに、file1 の列 5 とファイル 1 の列 5 に、最後にファイル 2 の列 NF-2 を乗算します。ファイルの長さが異なります。
次の 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 { 2[$0]++; 次へ } { for (i in two) { split(i, one); if (one[2] == $NF) print $0, one[5], $(NF-2)*one[5] } }' file1 file2 > file3
それは機能しますが、非常に非効率的で、しばらくするとコンプがクラッシュします。ファイルはそれぞれ約 100,000 行です。多分私はこれにperlかpythonを使うべきですか?または、ファイル 2 も読み取る方法はありますか? ありがとう!