各行を他のファイルの行と費用効果的に関連付ける

各行を他のファイルの行と費用効果的に関連付ける

次の形式のデータを含む非常に大きなファイル(〜10 Gbデータ)があります。

'1','1'    
'2','2'    
'3','3'    
'4','4'    
'5','5'    
'6','6'    
'7','7'    
'8','8'    
'9','9'    
'10','10'

他のファイルの形式(サイズ300Kb)は -

1,2    
1,3    
1,4    
1,5    
1,6    
1,7    
1,8    
1,9    
1,10    
2,1    
2,3    
2,4   
2,5    
2,6    
2,7    
2,8    
2,9

希望の出力 -

'1','1','1,2',    
'2','2','1,3',    
'3','3','1,4',    
'4','4','1,5',    
'5','5','1,6',    
'6','6','1,7',    
'7','7','1,8',    
'8','8','1,9',    
'9','9','1,10',    
'10','10','2,1',

これは、入力ファイルに千万を超えるレコードが含まれているためです。したがって、ループを介してこれを行うことは非常に高価な作業です。

ベストアンサー1

次のことを行います -

awk 'FNR==NR{a[i++]=$0; max=i; next} 
{if ((NR % max) == 0) {i=max-1} else {i=(NR%max) - 1}; 
printf "%s,%s\n",$0,a[i]}' smaller_file larger_file

しかし、これより速い方法をご存知の方は、おすすめしてください

おすすめ記事