シェルワンライナー160本ノック問題49
問題49 CPU負荷の調査2
問題のファイルは
https://github.com/shellgei/shellgei160
からダウンロードできる。
ログファイルをうまく整形して必要なデータを取り出す問題だった。今回も思いつかなかった。
解答例は
cat top.log | grep -E '^ *[0-9]+' | awk '{x=$9;for(i=1;i<12;i++)$i="";a[$0]+=x}END{for(k in a)print a[k],k}' | sort -k1,1nr | head -n 1
となる。ログのヘッダ部を grep でうまく除去している。ヘッダ部は行頭に空白と数字の組が来ないことを生かしている。レコード部に関してはawk で9列目を退避させてから11列目までを削除して行全体を指定するという手順で12列目以降のコマンドをうまく抜き出していた。うまい考え方だなと感心した。