我有两个文件。我想将第一部分第二列中的逗号分隔值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版本)