shell脚本中的汇总统计信息

shell脚本中的汇总统计信息

我在多个目录中有多个文件(记录)。每个记录根据其创建日期位于其自己的路径中。

例如 2016 年 11 月 12 日的记录是

~/records/2016/11/12/record.

在每条记录中,最后一行都有一个数字,我正在尝试计算每年的汇总统计数据。

如何编写需要两个用户输入的脚本:

  • 统计

其中统计量可以是平均值、最大值、最小值或全部(平均值、最大值和最小值)?

答案1

您可以使用输入来定义搜索所有文件并调用每个文件的year命令的根目录。findrecordtail -1

find ~/records/"$YEAR" -type f -name record -exec tail -1 {} \;

这足以打印指定年份的所有值。

计算最小/最大/平均,将输出输入到awk计算中。

awk -v stat="$STATISTICS" 'BEGIN { count=0; sum=0; }
  { if(!count) { min=$0; max=$0; }
    count++;
    sum += $0;
    if($0 > max) max = $0;
    if($0 < min) min = $0;
  }
  END {
    if(count) {
      # TODO: use variable "stat" to select only one result to print
      print min;
      print sum/count; # average
      print max;
    } else {
      print "no data";
    }
  }'

您可以组合并扩展这些片段以获得完整的脚本。

相关内容