#!/usr/bin/env bash
for year in all/*
do
echo -ne `basename $year .gz`"\t"
gunzip -c $year | \
awk '{ temp = substr($0, 88, 5) + 0;
q = substr($0, 93, 1);
if (temp !=9999 && q ~ /[01459]/ && temp > max) max = temp }
END { print max }'
done
1.basename $year .gz ``````````````````````这里是用来去除完整文件名的目录部分和文件名后缀的(e.g. /home/xiaoxiao/meteo/1901.gz -------> 1901 因为数据都是.gz的压缩文件,目的的为了得到书中的显示格式,当然可能自己实际运行有所差异)
1901 317
1902 244
............
2. substr($0, 88, 5) ````````````````````获得字字符串,从第88位开始,取之后的五个字符
3. q ~ /[01459]/ `````````````````````q是变量,在这里可能是0,1,4,5,9;
// 匹配代码块,可以是字符串或正则表达式
~ 匹配,与==相比不是精确比较
检测q是否为0,1,4,5,9中的任意一个