タブで区切られた列を持つ2つのファイルがあり、それらをマージしたいと思います。
ファイルa01
a= b=
c= d=
e= f=
g= h= i=
j= k= l=
m= n= 0=
ファイルb01
1 2
3 4
5 6
7 8 9
10 11 12
13 14 15
希望の出力
a=1 b=2
c=3 d=4
e=5 f=6
g=7 h=8 i=9
j=10 k=11 l=12
m=13 n=14 0=15
しかし、コマンドを実行すると
join a01 b01
何も返さない
何が間違っているのかわかりません
。
答え1
join
これはコマンドがまったく機能する方法ではありません。ワイヤー共通(一致するフィールド)に基づいています。入力ファイルにフィールドがありません。
paste
以下を使用して同様の操作を実行できますawk
。
paste a01 b01 | awk '{n=NF; for (i=n/2;i>0;i--) {$i = $i""$(i+n/2); NF--}} 1'
a=1 b=2
c=3 d=4
e=5 f=6
g=7 h=8 i=9
j=10 k=11 l=12
m=13 n=14 0=15
答え2
別の考えられるawk
解決策:
paste a01 b01 | awk '{ for (i=1; i<=NF/2; i++) printf $i $(i+NF/2) (i==int(NF/2) ? RS:FS) }'