私たちのサーバーでは、cronjobは共有ディレクトリのファイル数を記録します。ログ形式は次のとおりです。
2003-07-03T16:05 279
2003-07-03T16:10 283
2003-07-03T16:15 282
これまでのところ、ファイルには百万を超えるアイテムがあります。私はこれまでに経験した最大の変化(否定的、肯定的)を見つけることに興味があります。これを見つけるためのプログラムを書くことができますが、増分リストを提供するためのツールはありますか?
ソースファイルはSolarisにありますが、Linux Mintシステムにファイルのコピーがあります。
答え1
答え2
$ awk 'BEGIN{last=0}{delta[NR]=$2-last; last=$2; print $0" "delta[NR]}' file
あなたに与える
2003-07-03T16:05 279 279
2003-07-03T16:10 283 4
2003-07-03T16:15 282 -1
最後の列には増分があるため、最大の列を見つけるにはパイプを並べ替えます。
$ awk 'BEGIN{last=0}{delta[NR]=$2-last; last=$2; print $0" "delta[NR]}' file | sort -k3n
2003-07-03T16:15 282 -1
2003-07-03T16:10 283 4
2003-07-03T16:05 279 279
しかし、何百万ものアイテムについては非常に遅いでしょう。mysql
代わりに、または他のデータベースを使用することもできます。
答え3
最大の違いを持つ2行を表示します。
awk '{c=$2-a[2];
if(c<0)c=-c;
if(+a[2]&&c>b){b=c;d=a[1]" "a[2]"\n"$0};
split($0,a," ")}
END{print "Difference is",b,"between:\n"d}'