次の形式のデータを含む非常に大きなファイル(〜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
しかし、これより速い方法をご存知の方は、おすすめしてください