#!/bin/bash cat kadai2_data.csv | awk '{sub(",.*","");print}' > precity.txt #kadai2_data.csvから都道府県名、市町村名を抜き出し、precity.txtに保存する。 cut -f1 -d "&" precity.txt > pre.txt #precity.txtから都道府県名を抜き出し、pre.txtに保存する。 echo "都道府県名を入力してください" read KENMEI grep -x "$KENMEI" pre.txt > pre2.txt #「都道府県名を入力してください」と表示し、入力された文字を読み取る。読み取った文字をKENMEIとし、これと完全に一致する文字列がpre.txtにあればそれらをすべて取り出し、pre2.txtに保存する。一致する文字列がなければpre2.txtは空となる。 while [ ! -s "pre2.txt" ] do echo "該当する都道府県はありません" echo "もう一度入力してください" read KENMEI grep -x "$KENMEI" pre.txt > pre2.txt done #空でないpre2.txtが作られるまで「該当する都道府県はありません」、「もう一度入力してください」と表示し同様の作業を繰り返し、pre2.txtを作る。 grep "$KENMEI" precity.txt > precity2.txt #KENMEIを含む行をすべて取り出し、precity2.txtに保存する。 cut -f2 -d "&" precity2.txt > city.txt #precity2.txtの市町村名の部分だけ取り出し、city.txtに保存する。 echo "市町村名を入力してください" read CITY grep -x "$CITY" city.txt > city2.txt #「市町村名を入力してください」と表示し、入力された文字を読み取る。読み取った>文字をCITYとし、これと完全に一致する文字列がcity.txtにあればそれらをすべて取り>出し、city2.txtに保存する。一致する文字列がなければcity2.txtは空となる。 while [ ! -s "city2.txt" ] do echo "該当する市町村はありません" echo "もう一度都道府県名を入力して下さい" read KENMEI grep -x "$KENMEI" pre.txt > pre2.txt while [ ! -s "pre2.txt" ] do echo "該当する都道府県はありません" echo "もう一度都道府県名を入力して下さい" read KENMEI grep -x "$KENMEI" pre.txt > pre2.txt done grep "$KENMEI" precity.txt > precity2.txt cut -f2 -d "&" precity2.txt > city.txt echo "市町村名を入力して下さい" read CITY grep -x "$CITY" city.txt > city2.txt done #空でないcity2.txtが作られるまで、つまり都道府県名と市町村名が正しい組み合わせになるまで「該当する市町村はありません」、「もう一度入力してください」と表示する。その後、KENMEIを読み取る作業からやり直す。同様の作業を繰り返し、city2.txtを作る。 echo "光害指数は" grep -w "$KENMEI&$CITY" kadai2_data.csv > kencity.csv awk -F, '{print $4}' kencity.csv #「光害指数は」と表示し、該当する地名の光害指数を表示する。 ido=`awk -F, '{print $2}' kencity.csv` keido=`awk -F, '{print $3}' kencity.csv` #指定された地点の緯度経度をそれぞれ変数として抜き出す。 awk -F, -v "ido=$ido" -v "keido=$keido" '{print $1","((30.82*(ido-$2)*3600)**2+(25.11*(keido-$3)*3600)**2)**0.5","$4}\' kadai2_data.csv > kyori.csv #指定された地点から他の地点までの距離を座標を用いて計算する。 awk -F, '$2 <= 100000 {print $1","$3}' kyori.csv > near.csv #100km以内の市町村を抜き出す。 sort -k 2n -t "," near.csv | awk 'NR==1,NR==3' > rank.csv #光害指数を昇順に並び替え、上位3位までを抜き出す。 cut -d "," -f1 rank.csv > rank1.txt cut -d "," -f2 rank.csv > rank2.txt paste rank2.txt rank1.txt > rank3.txt #rank.csvの1行目と2行目を並び替えて、rank3.txtに保存する。 echo "100km以内にある光害指数が低い場所は" cat rank3.txt #「100km以内にある光害指数が低い場所は」と表示し、結果を表示する。 rm *.txt rm kencity.csv rm kyori.csv rm near.csv rm rank.csv #不要なファイルを消去する。