+ -
当前位置:首页 → 问答吧 → 一组数据,如何两两得到差值??

一组数据,如何两两得到差值??

时间:2011-02-11

来源:互联网

一组数据

209 11 108 34
999 22 32 40
1 23 89 33 44

我要两两相减, 比如 第一排  11-209, 108-209,34-209,108-11,34-11,34-108, 都取绝对值。
然后竖排排列。
上面最终结果
198
101
175
97
23
74
其他两排同样处理。

awk 或者别的工具可以实现吗??

作者: vitas333_cu   发布时间: 2011-02-11

try:
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. while(<>){
  5. my @num=split;
  6. my ($i,$j);
  7. for($i=0;$i<$#num;$i++)
  8. {
  9.         for($j=$i+1;$j<=$#num;$j++)
  10.         {
  11.                 if(($num[$j]-$num[$i])>0)
  12.                 {
  13.                     print $num[$j]-$num[$i],"\n";
  14.                 } else {
  15.                     print $num[$i]-$num[$j],"\n";
  16.                 }
  17.         }
  18. }
  19. }
复制代码

作者: zzy7186   发布时间: 2011-02-12

回复 vitas333_cu


    是这样的么?
  1. echo "209 11 108 34
  2. 999 22 32 40
  3. 1 23 89 33 44" |awk '{for(i=1;i<=NF;i++)for(j=i;j<=NF;j++)if(i!=j){print ($i-$j>0?$i-$j:$j-$i)}}'
  4. 198
  5. 101
  6. 175
  7. 97
  8. 23
  9. 74
  10. 977
  11. 967
  12. 959
  13. 10
  14. 18
  15. 8
  16. 22
  17. 88
  18. 32
  19. 43
  20. 66
  21. 10
  22. 21
  23. 56
  24. 45
  25. 11
复制代码

作者: yinyuemi   发布时间: 2011-02-12

热门下载

更多