Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー160本ノック問題8

問題8 ログの集計

問題のファイルは

https://github.com/shellgei/shellgei160

からダウンロードできる。

ログから午前と午後の行数をそれぞれ求める問題だった。今回は簡単にできた。

cat access.log | awk '{print $4}' | sed 's;.*/.*/[0-9]*:;;'| sed 's/:[0-9]*:[0-9]*$//'| awk '$1<12{am+=1}12<=$1{pm+=1}END{print "午前", am, "午後", pm}'

時間以外の部分を無理やり sed でそぎ落として最後に awk で判定をした。本に載っていた解答はもっとスマートなものになっている。区切り文字をセミコロンに変更し、後ろから列を数えている。