
Tengo dos archivos. Quiero hacer coincidir los valores separados por coma en la segunda columna de la primera parte File1
con los valores de la primera columna File2
y 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)