#!/bin/bash if [ "$1" = 平井堅 ] then echo '瞳を閉じてください。' elif [ "$1" = 松平健 ] then echo '上様、正しい県名を入力してくださいませ。' else if [ ${#1} -ge 3 ] #[新しい追加です。]引数に対して、「山」など重複が考えられる。もしくはなにも入力しない場合をはじき>ます。 then b=`awk '{print $3}' ./yuruCharaRanking.dat | grep -c "$1" ` #↑データのうち県名と該当する部分の件数を出力してbと名づけます。三列目に絞るのはゆるキャラ名でヒットするのを防ぐため。 if [ $b = 0 ] then echo '入力した都道府県名は存在しません。正しい名前を入力してください。' else x=`awk 'BEGIN{n=0}{n += $4}END{print n}' ./yuruCharaRanking.dat` #全得票数を算出、xと名づけます。 y=`grep "$1" ./yuruCharaRanking.dat | awk 'BEGIN{n=0}{n += $4}END{print n}'` #県名にヒットした全キャラの得票数を算出、yと名づけます。 z=`echo "scale=1; 100 * $y / $x" | bc -l | sed 's/^\./0\./'` #yをxで除して得票率を算出します。小数点一位まで算出するよう設定しています。 echo [ "$1"内ゆるキャラランキング(全国得票数$z%)] grep "$1" ./yuruCharaRanking.dat | sort -k 4,4 -n -r | awk '{print $4,$1,$2}'| sed -e 's/,//g' > c.dat #↑打ち込んだ県名に一致する行を、まず得票数順に並び替え、得票数、エントリーNo、キャラ名の順に列を並び替えた後、区切り文字コンマを変更して空白に変換しています。c.datと名付けています。 i=1 while [ "$i" -le "$b" ] do d=` head -"$i" c.dat | tail -1 ` echo $i位 $d i=`expr $i + 1` done #i位のときに、c.datの上からi番目を横に並べて表示、ヒットした件数だけ繰り返します。 rm c.dat fi else echo '正しい都道府県名を入力してください。~県というように県までつけて入力してください。' fi fi