2016-12-07 6 views
-1

私は2つのタブDELIMファイルを持っている2つのファイルからテキストを追加する方法:以下に示すようにawkを

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.txt 
1  a,b,c 
2  b,c,e 
3  e,d,f,a 

FileB.txt 
a xxx 
b xyx 
c zxxy 

が、私は以下のように出力が必要になりますFileAの$ 2の$ 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 
関連する問題