
我有兩個文件。我想將第一部分第二列中的逗號分隔值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版本)