USP友の会会長が出題した後半戦を解いてみた。

■USP友の会会長が出題した後半戦を解いてみた。

 hbstudy #38 で講師してきました
 http://www.usptomo.com/PAGE=20121028HBSTUDY

■問題6:日付の計算(中級)
 1978216日は20121027日の何日前でしょう?

$ echo `date --date "1978/02/16" +'%s'; date --date "2012/10/27" '+%s'` | awk '{print ($2-$1)/60/60/24}'
12672

■おまけ。
 曜日は+2日ズレ。

$ echo "12672" | awk '{print $1%7}'  
2
$ echo `date --date "1978/02/16"; date --date "2012/10/27"`
1978216日 木曜日 00:00:00 JST 20121027日 土曜日 00:00:00 JST

■問題7:リストにないものを探す(中級)
 1から10のうち欠けている数の表示。

$ seq 1 10 | awk '{print rand(),$1}' | sort | head -9 | awk '{print $2}' > nums
$ for n in `seq 1 10`;do grep "$n\$" nums > /dev/null || echo $n;done
9

■問題8:CPU使用率(上級)
 topからどのユーザが何%CPUを使用しているかの集計

$ top -b -n 1 | tail -n +8 | grep -v "^\$" | \
  awk '{print $2,$9}' | sort -k 1 | \
  awk '{if($1==USER){CPU+=$2}else{print USER,CPU;USER=$1;CPU=$2}}END{print USER,CPU}' | \
  sort -k 2 -nr | grep "^[a-z]" | nl -b t -n rz -w 2 | awk '{print "dummy"$1,$3}'
dummy01 2
dummy02 0
dummy03 0.0
dummy04 0.0
dummy05 0
dummy06 0
dummy07 0
dummy08 0
dummy09 0.0
dummy10 0.0
dummy11 0
dummy12 0


■問題9:横に並んだ数字のソート(上級)
 行の数値ソート。

$ seq 1 1000 | awk '{print rand(),$1}' | sort | head -9 | awk '{print $2}' | xargs echo -n;echo; \
  seq 1000 -1 1 | awk '{print rand(),$1}' | sort | head -9 | awk '{print $2}' | xargs echo -n; \
  echo;seq 1 2 100 | awk '{print rand(),$1}' | sort | head -9 | awk '{print $2}' | xargs echo -n;echo;
515 454 27 235 347 597 669 852 942
486 547 974 766 654 404 332 149 59
53 89 95 9 23 49 75 97 85

$ echo '515 454 27 235 347 597 669 852 942
486 547 974 766 654 404 332 149 59
53 89 95 9 23 49 75 97 85' > file

$ while read LINE; do echo $LINE | sed s/" "/"\n"/g | sort -n | xargs echo -n;echo; done < file
27 235 347 454 515 597 669 852 942
59 149 332 404 486 547 654 766 974
9 23 49 53 75 85 89 95 97


■問題10:対戦表を作る(上級)
 CSV出力を若干強引に。。。

$ echo "阪神
中日
広島" | tac | echo -n `xargs` | awk '{print $0"  "$3"  "$2"  "$1}' | \
  sed s/"  "/"\n"/g | sed s/"^..\$"/"&,,,"/g | sed s/". "/"&,"/g | sed s/"^.. "/",&"/g | sed s/" "//g
,広島,中日,阪神
阪神,,,
中日,,,
広島,,,