Сопоставление столбцов в отдельных файлах

Сопоставление столбцов в отдельных файлах

У меня есть два файла. Я хочу сопоставить разделенные запятыми значения во втором столбце в первой части 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)

Связанный контент