こんな感じでテストログを作成。combined形式。
# cat testlog.log 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 100 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 202 100 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 203 100 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 204 100 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 205 100 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 100 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 100 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 401 10 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 10 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 10 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
条件なしで総転送量を調べる
# cat testlog.log | awk '{sum+=$10}END{print sum}' 730
httpレスポンスが200番台の総転送量を調べる
# cat testlog.log | awk '{if($9 ~ /2[0-9][0-9]/){sum+=$10}}END{print sum}' 700
awkのif文で$9が200番台かどうかを見ている。
$9 ~ /正規表現/で$9が正規表現にヒットしたらif分は真となる。
httpレスポンスが200番台以外の総転送量を調べる
# cat testlog.log | awk '{if($9 !~ /2[0-9][0-9]/){sum+=$10}}END{print sum}' 30
~の前に!をつけると否定になる