我在多个目录中有多个文件(记录)。每个记录根据其创建日期位于其自己的路径中。
例如 2016 年 11 月 12 日的记录是
~/records/2016/11/12/record.
在每条记录中,最后一行都有一个数字,我正在尝试计算每年的汇总统计数据。
如何编写需要两个用户输入的脚本:
- 年
- 统计
其中统计量可以是平均值、最大值、最小值或全部(平均值、最大值和最小值)?
答案1
您可以使用输入来定义搜索所有文件并调用每个文件的year
命令的根目录。find
record
tail -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";
}
}'
您可以组合并扩展这些片段以获得完整的脚本。