Correspondência de colunas em arquivos separados

Correspondência de colunas em arquivos separados

Eu tenho dois arquivos. Quero combinar os valores separados por vírgula na segunda coluna da primeira parte File1com os valores da primeira coluna File2e escrever no arquivo File2. Como faço isso emawk

Arquivo1

Column1    Column2
A          G1,G2
B          G4,G1

Arquivo2

G1
G2

Resultado desejado

Column1    Column2
G1         A,B
G2         A

Responder1

Experimente isso

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

Se você não tem/precisa da linha de cabeçalho, pode simplificar descartando o primeiro par regra/ação.

Responder2

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

(ok, ok, prefiro a versão @steeldriver)

informação relacionada