複数のディレクトリに複数のファイル(レコード)があります。各レコードは、作成日に基づいて独自のパスにあります。
たとえば、2016年11月12日の記録は次のとおりです。
~/records/2016/11/12/record.
各レコードの最後の行には数字があり、各年の要約統計を計算しようとしています。
2人のユーザーからの入力を必要とするスクリプトを作成するには:
- 年度
- 統計
統計が平均、最大、最小、または全体(平均、最大、最小)である場合はどこですか?
答え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";
}
}'
これらのフラグメントを組み合わせて拡張して、完全なスクリプトを取得できます。