2つのファイルがあります。最初のセクションの2番目の列のコンマ区切り値をFile1
最初の列の値と一致させ、どうすればよいですかFile2
?File2
awk
ファイル1
Column1 Column2
A G1,G2
B G4,G1
ファイル2
G1
G2
希望する結果
Column1 Column2
G1 A,B
G2 A
答え1
この試み
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
ヘッダー行が存在しない場合、または不要な場合は、最初のルール/アクションペアを削除して単純化できます。
答え2
perl -nE ' chomp;
($a,@b)= split(/[\t,]/,$_);
for(@b){ $aux{$_}.= ",$a" }
say "$_$aux{$_}" =~ s/,/\t/r unless @b
' file1 file2
(わかりました、わかりました、私は@steeldriverのバージョンを好む)