ApacheログファイルでAPI応答時間を見つける必要があります。応答時間と同様に1~2秒、2~3秒程度かかります。$6
は応答時間で、値はマイクロ秒単位です。
次のコマンドを使用しようとしていますが、出力は常に同じです。
grep 17/Sep/2016:10 /access.log| awk '{print ($6 > 1000000 && 2000000 > $6)}' | wc -l
ベストアンサー1
この質問は、例としていくつかの行を追加するとaccess.log
より明確になります。とにかく、awkコマンドは値に関係なく1行を印刷するので、$6
行数を数えるとwc -l
grepによってのみ決定される結果が得られます。
$6
2つの異なる値間の行数を計算するには、次のように書くことができます。
grep 17/Sep/2016:10 /access.log | awk '$6 > 1000000 && 2000000 > $6' | wc -l
ただし、このパイプラインはやや非効率的です。次のように、単一のawkコマンドを組み合わせるのがほぼ常に優れています。
awk '/17\/Sep\/2016:10/ && $6 > 1000000 && 2000000 > $6 {c++} END{print c}' access.log
境界を含めるには、次のようにします。
grep 18/Sep/2016:11 /access.log | awk ' $6>=1000000 && $6<=2000000' | wc -l
または等しく
awk '/18\/Sep\/2016:11/ && $6>=1000000 && $6<=2000000 {c++} END{print c}' access.log