簡體   English   中英

AWK:比較兩個文件並根據差異計算百分比

[英]AWK: Compare two files and calculate a percentage based on differences

我有兩個這樣的文件。我需要計算每個ID在每個文件上出現的次數,並計算差值以獲得成功百分比。 此外,當第一個文件的第三列包含單詞NONE且第二個文件的同一列包含數字時,指示已獲得該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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM