Coincidencia de columnas en archivos separados

Coincidencia de columnas en archivos separados

Tengo dos archivos. Quiero hacer coincidir los valores separados por coma en la segunda columna de la primera parte File1con los valores de la primera columna File2y escribir en el archivo File2. ¿Cómo hago esto enawk

Archivo1

Column1    Column2
A          G1,G2
B          G4,G1

Archivo2

G1
G2

Resultado deseado

Column1    Column2
G1         A,B
G2         A

Respuesta1

Prueba esto

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

Si no tiene o no necesita la línea de encabezado, puede simplificarla eliminando el primer par de regla/acción.

Respuesta2

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

(vale, vale, prefiero la versión @steeldriver)

información relacionada