awkのn行ごとに入力ファイルの行を挿入します。

awkのn行ごとに入力ファイルの行を挿入します。

入力ファイルAとBは次のようになります。

ファイルA

1 1 1
2 2 2
3 3 3

文書B

10 10 10
20 20 20
30 30 30
40 40 40
50 50 50
60 60 60 
70 70 70

ファイルAの最初の行から最初の行から始めて、ファイルBの3行ごとにファイルAに1行を挿入し、出力は次のようになります。

1 1 1
10 10 10
20 20 20
30 30 30
2 2 2
40 40 40
50 50 50
60 60 60 
3 3 3 
70 70 70

最初は3行ごとに別々のファイルを作成しようとしましたが、データセットが非常に大きく、ハードドライブのスペースを節約することに興味がありました。

答え1

awkを使用する必要がない場合は、貼り付けを使用できます。

$ paste -d '\n' <fileB fileA - - - | tr -s '\n' >fileC

このtr部分は必ずしも必要ではないので、追加の改行が気に入らない場合は削除できます。

答え2

良いケースのようですgetline

awk '(NR-1)%3 == 0 {getline line < "FileA"; print line} 1' FileB
1 1 1
10 10 10
20 20 20
30 30 30
2 2 2
40 40 40
50 50 50
60 60 60 
3 3 3
70 70 70

答え3

GNU sedRコマンドを使用してください。

sed -e $'R fileb\nR fileb\nR fileb' filea > output

関連情報