單獨文件中的列匹配

單獨文件中的列匹配

我有兩個文件。我想將第一部分第二列中的逗號分隔值File1與第一列中的值相符File2並寫入File2.我該怎麼做awk

文件1

Column1    Column2
A          G1,G2
B          G4,G1

文件2

G1
G2

期望的結果

Column1    Column2
G1         A,B
G2         A

答案1

嘗試這個

awk '
  NR==1 {
    print;
    next;
  }
  NR==FNR {
   split($2,a,","); 
   for(i in a) b[a[i]] = b[a[i]]==""? $1 : b[a[i]] "," $1;
   next;
  }
  {
    if ($1 in b) print $1 "\t" b[$1];
  }
  ' File1 File2

如果您沒有/不需要標題行,您可以透過刪除第一個規則/操作對來簡化。

答案2

perl -nE ' chomp; 
   ($a,@b)= split(/[\t,]/,$_); 
   for(@b){ $aux{$_}.= ",$a" } 
   say "$_$aux{$_}" =~ s/,/\t/r  unless @b
   ' file1 file2

(好吧,好吧,我更喜歡@steeldriver版本)

相關內容