2016-12-07 62 views
-1

我有兩個選項卡DELIM的文件添加文本,如下圖所示:如何從兩個文件中的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

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