9月末に発売されたシェル芸本の続きです。データの集計・変形は普段からよくやるからか手段が思いつきやすいですね
前回はこちら
問題47
$ cat qdata/47/mom.csv | awk -F, '{if(s){$3=($2/s-1)*100;$3=($3<0?$3:"+"$3)"%"}else{$3="*"};s=$2;print}' OFS=, 2017/01,108192,* 2017/02,134747,+24.5443% 2017/03,120420,-10.6325% 2017/04,147368,+22.3783% 2017/05,262456,+78.0957% 2017/06,280741,+6.96688% 2017/07,315083,+12.2326% 2017/08,522489,+65.8258% 2017/09,489003,-6.40894% 2017/10,729017,+49.0823% 2017/11,987173,+35.4115% 2017/12,1025320,+3.86427%
問題48
$ ps aux | sed 1d | awk '{a[$1]+=$3;t[$1]++}END{for(k in a)print k, a[k], t[k]}' | sort -k2nr xztaity+ 0.4 13 root 0 3
問題49
$ cat qdata/49/top.log | awk '/^\s+PID/,/^top/' | grep -vPe "^\s+PID|^top" | sel --remove-empty 9 12: | sort -k1nr | head 93.8 /root/test/load_nakamura 2 600000 100000 93.8 /root/test/load_ueda 3 600000 100000 88.2 /root/test/load_nakamura 2 600000 100000 88.2 /root/test/load_ueda 3 600000 100000 61.1 /root/test/load_ueda 3 600000 100000 53.3 /usr/bin/python3 /usr/sbin/iotop -b -n 1 -t -k 50.0 /root/test/load_nakamura 2 600000 100000 50.0 /root/test/load_ueda 3 600000 100000 47.4 /usr/bin/python3 /usr/sbin/iotop -b -n 1 -t -k 47.1 /root/test/load_nakamura 2 600000 100000
これはたまにやる
問題50
$ cat qdata/50/sales | awk '{a[$3$4]+=$5}END{for(k in a)print k, a[k]}' | sort | join - <(sed 's/ //' ./qdata/50/stones_master) | awk '{print $3,$2*$4}' シェル石 1500 非行石(青) 10000 非行石(偽物・赤) 70 おじいちゃんから出た石 31 デーモンコア 200000
おじいちゃんから出た石
問題51
$ (cat qdata/51/scores.txt | awk '{printf "%03d %d\n", $1,$2}'; awk '{print $1,0}' qdata/51/students.txt) | sort -k1,2n | awk '{a[$1]=$2}END{for(k in a)print k, a[k]}' | sort | join - qdata/51/students.txt | sel 1 3 2 001 井田 0 002 上田 40 003 江田 0 004 織田 0 005 加田 80 006 木田 95 007 久田 0 008 山田 76