Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29315
  • 博文数量: 6
  • 博客积分: 1498
  • 博客等级: 上尉
  • 技术积分: 65
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-12 16:52
文章分类
文章存档

2012年(4)

2008年(2)

我的朋友

分类: Python/Ruby

2012-11-20 10:12:30


  1. cat file1
  2. a 600 14618 99
  3. b 1201 9395 26
  4. c 301 5071 77

  1. 分数段 权重0.2 权重0.4 权重0.4
  2. 0 分 >1000 >12000 <30
  3. 50分 501~1000 6001~12000 31~50
  4. 100分 0~500 0~6000 51~100

  1. 计算公式:
  2. A=(A - 500) / ( 1000 - 500) * n * 0.2
  3. B=B * n * 0.4
  4. C=(C -50) / (100 - 50) * n * 0.4
  5. S=A + B + C
  6. 按照以上的设置进行分数计算, 最后输出结果如下:
  7. a 2 0 39.2 41.2
  8. b 0 24020 0 24020
  9. c -7.96 12040 21.6 12053.6

  1. awk 'BEGIN{print "N A(0.2) B(0.4) C(0.4) S(1.0)"}{i[$1];if($2>=0&&$2<=500)n1=100;else if($2>500&&$2<=1000)n1=50;else if($2>1000)n1=0;a[$1]=($2-500)/(1000-500)*n1*0.2;if($3>=0&&$3<=6000)n2=100;else if($3>6000&&$3<=12000)n2=50;else if($3>12000)n2=0;b[$1]=$2*n2*0.4;if($4<30)n3=0;else if($4>30&&$4<=50)n3=50;else if($4>50&&$4<=100)n3=100;c[$1]=($4-50)/(100-50)*n3*0.4;j[$1]=a[$1]+b[$1]+c[$1]}END{for(k in i){print k,a[k],b[k],c[k],j[k]}}' file1 | column -t

  1. 格式化代码:
  2. awk '
  3.     BEGIN{
  4.         print "N A(0.2) B(0.4) C(0.4) S(1.0)"
  5.     }
  6.     {
  7.         i[$1]
  8.         if($2>=0&&$2<=500){
  9.             n1=100;
  10.         }
  11.         else if($2>500&&$2<=1000){
  12.             n1=50;
  13.         }
  14.         else if($2>1000){
  15.             n1=0;
  16.         }
  17.         a[$1]=($2-500)/(1000-500)*n1*0.2;
  18.         
  19.         if($3>=0&&$3<=6000){
  20.             n2=100;
  21.         }
  22.         else if($3>6000&&$3<=12000){
  23.             n2=50;
  24.         }
  25.         else if($3>12000){
  26.             n2=0;
  27.         }
  28.         b[$1]=$2*n2*0.4;
  29.         
  30.         if($4<30){
  31.             n3=0;
  32.         }
  33.         else if($4>30&&$4<=50){
  34.             n3=50;
  35.         }
  36.         else if($4>50&&$4<=100){
  37.             n3=100;
  38.         }
  39.         c[$1]=($4-50)/(100-50)*n3*0.4;
  40.         j[$1]=a[$1]+b[$1]+c[$1]
  41.     }
  42.     END{
  43.         for(k in i){
  44.             print k,a[k],b[k],c[k],j[k]
  45.         }
  46.     }' $1 | column -t
阅读(1173) | 评论(0) | 转发(0) |
0

上一篇:Sed & Awk & Perl 单行脚本快速参考

下一篇:没有了

给主人留下些什么吧!~~