Coluna correspondente em arquivos separados

0

Eu tenho dois arquivos. Desejo corresponder valores separados por coma na segunda coluna na primeira parte de File1 aos valores da primeira coluna em File2 e escrever no File2 . Como faço isso em awk

Arquivo1

Column1    Column2
A          G1,G2
B          G4,G1

Arquivo2

G1
G2

Resultado desejado

Column1    Column2
G1         A,B
G2         A
    
por KHAN irfan 21.10.2016 / 15:10

2 respostas

1

Tente 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, você pode simplificar descartando o primeiro par regra / ação.

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

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

    
por 21.10.2016 / 20:52