空行条件を使用して行数が異なる2つのファイルをマージする方法は?

空行条件を使用して行数が異なる2つのファイルをマージする方法は?

2つのファイルがあり、そのうちの1つには、以下のように空白行で区切られた異なるセクションがあります。

a11 a12 a13
b11 b12 b13
c11 c12 c13

a21 a22 a23
b21 b22 b23
c21 c22 c23
d21 d22 d23

a31 a32 a33
b31 b32 b33

2番目のファイルの行数は、1番目のファイルのセクション数と同じです。

x1 X2
y1 y2 
z1 z2

希望の出力を出力

a11 a12 a13 x1 x2
b11 b12 b13
c11 c12 c13

a21 a22 a23 y1 y2
b21 b22 b23
c21 c22 c23
d21 d22 d23

a31 a32 a33 z1 z2
b31 b32 b33 

試してみましたが、paste file1 file2目的の結果は出ませんでした。

ベストアンサー1

$ awk 'NR==FNR{a[NR]=$0; next} {print $0 (pNF ? "" : OFS a[++c]); pNF=NF}' file2 file1
a11 a12 a13 x1 X2
b11 b12 b13
c11 c12 c13

a21 a22 a23 y1 y2
b21 b22 b23
c21 c22 c23
d21 d22 d23

a31 a32 a33 z1 z2
b31 b32 b33

おすすめ記事