-2

我在一个文件(文件-A)中有一个制表符分隔的表,如下所示:

ind1   A1   B1   C1   
ind2   A2   B2   C2   
ind3   A3   B3   C3   

另一个文件(文件-B)中的一列值按如下顺序排列:

ind1
X1
Y1
ind2
X2
Y2
ind3
X1
Y2

我想合并这两个文件,以便文件-B(ind1、ind2 等)中每个人下列出的值插入与文件-A 中每个人相对应的“中间”值。对于这种特殊情况,输出应如下所示:

ind1   A1   X1   B1   Y1   C1
ind2   A2   X2   B2   Y2   C2
ind1   A3   X3   B3   Y3   C3
4

1 回答 1

0

我相信你的例子有错误:

file2 应该以

X3
Y3

最后一行输出应该是:

ind3 .....

这个 awk oneliner 适用于您的示例`:

awk -F'\t' -v OFS='\t' 'NR==FNR{a[NR]=$0;next}{print $1,$2,a[(FNR-1)*3+2],$3,a[FNR*3],$4}' file2 file

使用您的数据:

kent$  head file file2
==> file <==
ind1    A1      B1      C1
ind2    A2      B2      C2
ind3    A3      B3      C3

==> file2 <==
ind1
X1
Y1
ind2
X2
Y2
ind3
X3
Y3

kent$  awk -F'\t' -v OFS='\t' 'NR==FNR{a[NR]=$0;next}{print $1,$2,a[(FNR-1)*3+2],$3,a[FNR*3],$4}' file2 file
ind1    A1      X1      B1      Y1      C1
ind2    A2      X2      B2      Y2      C2
ind3    A3      X3      B3      Y3      C3
于 2013-04-10T16:16:31.550 回答