如何在awk中添加两个文件中的文本

时间:2016-12-07 15:44:30

标签: join awk

我有两个制表符分隔文件,如下所示:

FileA.txt   
1     a,b,c
2     b,c,e
3     e,d,f,a

FileB.txt
a    xxx
b    xyx
c    zxxy

我需要以下面的方式输出:

Output:
1     a,b,c    xxx,xyx.zxxy
2     b,c,e    xyx,zxxy,e
3     e,d,f,a  e,d,f,xxx

FileA $ 2中的逗号分隔值将用作搜索FileB $ 1中匹配项的键,并在输出中添加一个新列,其值为FileB中的$ 2。如果不匹配则应打印原始值。有关如何执行此操作的任何帮助吗?

1 个答案:

答案 0 :(得分:1)

awk救援!

$ awk 'NR==FNR {a[$1]=$2; next} 
               {NF++; s=""; n=split($2,t,","); 
                for(i=1;i<=n;i++) {k=t[i]; 
                                   $NF=$NF s ((k in a)?a[k]:k);           
                                   s=","}}1' fileB fileA | column -t

1  a,b,c    xxx,xyx,zxxy
2  b,c,e    xyx,zxxy,e
3  e,d,f,a  e,d,f,xxx