Bash AWK:比较两个文件并根据差异计算百分比

Bash AWK:比较两个文件并根据差异计算百分比,bash,awk,sed,Bash,Awk,Sed,我有两个这样的文件。。 我需要的是计算每个ID在每个文件上出现的次数,并计算差异以获得成功的百分比。此外,当第一个文件的第三列包含“无”一词,而第二个文件的同一列包含一个数字时,请指示已获得该ID的类别 文件1: ID;Coments;Category 2;es un anuncio interesante que le puede servir para alguien;321 3;es un anuncio de un banco que quiere presentarse como un

我有两个这样的文件。。 我需要的是计算每个ID在每个文件上出现的次数,并计算差异以获得成功的百分比。此外,当第一个文件的第三列包含“无”一词,而第二个文件的同一列包含一个数字时,请指示已获得该ID的类别

文件1:

ID;Coments;Category
2;es un anuncio interesante que le puede servir para alguien;321
3;es un anuncio de un banco que quiere presentarse como una compañía;NONE
4;es un anuncio de un banco que ofrece prestamos para empresas.;70
5;credito pyme bana para hacer crecer tu negocio;50
5;credito pyme bana para hacer crecer tu negocio;52
5;credito pyme bana para hacer crecer tu negocio;70
5;credito pyme bana para hacer crecer tu negocio;71
6;comercial que te hace pensar en considerar a bana para poner tu  negocio;50
6;comercial que te hace pensar en considerar a bana para poner tu negocio;71
7;este anuncio da una breve explicación sobre el tratamiento de hemodialisis;50
8;un anucio de bana donde muestra que se puede pedir un crédito para emprender;50
8;un anucio de bana donde muestra que se puede pedir un crédito para emprender;52
8;un anucio de bana donde muestra que se puede pedir un crédito para emprender;70
8;un anucio de bana donde muestra que se puede pedir un crédito para emprender;71
9;bonito;NONE
文件2:

ID;Coments;Category
2;es un anuncio interesante que le puede servir para alguien;321
3;es un anuncio de un banco que quiere presentarse como una compañía;57
4;es un anuncio de un banco que ofrece prestamos para empresas.;50
5;credito pyme bana para hacer crecer tu negocio;52
6;comercial que te hace pensar en considerar a bana para poner tu negocio;50
7;este anuncio da una breve explicación sobre el tratamiento de hemodialisis;210
8;un anucio de bana donde muestra que se puede pedir un crédito para emprender;50
9;bonito;303
期望输出:

For the ID-2, we have achieved a 100% success rate.
For the ID-3, we have achieved a category.
For the ID-4, we have achieved a 100% success rate.
For the ID-5, we achieved a 25% success rate.
For the ID-5, we achieved a 50% success rate.
For the ID-7, we have achieved a 100% success rate.
For the ID-8, we have achieved a 25% success rate.
For the ID-9, we have achieved a category.
一种方法可以是这么小。但当然,我需要计算百分比,然后像我想要的输出格式一样打印出来

awk 'BEGIN { FS=OFS=";" } NR==FNR{cnt[$1]++; next} { cnt2[$1]++;}  END{ for (ID in cnt){ print ID, "CAT: "cnt[ID],"Manual: "cnt2[ID];}}'
Awk就是为了这个

awk -F ';' '
   FNR==1{next}
   FNR==NR{C1[$1]++;N1[$1]=($3!~/NONE/);next}
   {C2[$1]++;if($3!~/NONE/)N2[$1]++}
   END{
      for(c in C1){
         if((N1[c]==0)&&(C2[c]>0)&&(N2[c]>0)){
            S="we have achieved a category."
            }
          else S=sprintf( "we have achieved a %d%% success rate.", C2[c]*100/C1[c])
         printf "For the ID-%d, %s\n", c, S
         }
      }' file1 file2

那么,您尝试了什么?您遇到了什么问题?如果一个事件在第一个文件中被标记为
NONE
,您只对它获得了一个类别感兴趣?你对它的成功率不感兴趣吗此外,在第二个文件中是否可能存在第一个文件中未提及的ID?如果是这样的话,我们想报告这个问题吗?在哪方面?给你一个想法,就像每个文件都是一个团队的结果,如果第一个团队用ID-5命中了四次,而第二个团队只有一次。我们展示了结果,表示ID-5的成功率为20%。如果第一组在第三列中有“无”一词,第二组有一个数字,那么我们会显示结果,说“我们已经获得了一个类别”。你能帮忙吗??