
Eu tenho dois arquivos. Quero combinar os valores separados por vírgula na segunda coluna da primeira parte File1
com os valores da primeira coluna File2
e 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)