#!/bin/bash file='kadai2_data.csv' #ヘッダー以外の行(1行目以外)を抜き出して別のファイルに書く tail -n +2 $file > edited_data.csv file0='edited_data.csv' prefecture=nothing city=nothing #都道府県名の入力を求めて変数prefectureを得る echo "都道府県名を入力してください" read prefecture #変数prefectureと文字&を連結 prefectureand="${prefecture}&" #市町村名の入力を求めて変数cityを得る echo "市町村名を入力してください" read city #変数prefecture&と変数cityを連結 prefectureandcity=$prefectureand$city # -Fでセパレータを指定し一列目を抜き取る PREFECTUREandCITY=`awk -F "," '{print $1}' $file0` while ! `echo "$prefectureandcity" | grep -q -x "$PREFECTUREandCITY"` do echo "名前が一致しません" echo "都道府県名を入力してください" read prefecture prefectureand="${prefecture}&" echo "市町村名を入力してください" read city prefectureandcity=$prefectureand$city done #入力された都道府県名・市町村名に完全に合致する行を抽出 grep -n "$prefectureandcity" edited_data.csv > keisan.txt #keisan.txtの中の緯度・経度・光害度数を変数として定義 latitude=`awk -F "," '{print $2}' keisan.txt` longitude=`awk -F "," '{print $3}' keisan.txt` LPI=`awk -F "," '{print $4}' keisan.txt` #光害指数の表示 echo "光害指数は" echo "$LPI" #file0の配置は変えないで、各データの緯度・経度に当たる項目を、入力された地域からの南北・東西方向の距離に変換 awk -F, '{print $1, (($2 - '${latitude}') * 3.6) * 30.82, (($3 - '${longitude}') * 3.6) * 25.11, $4}' $file0 > keisan0.txt #2地点間の距離を計算し新たなファイルに出力 awk '{print $1, sqrt(($2)^2 + ($3)^2), $4}' keisan0.txt > keisan1.txt #距離が100km以下の行だけを抽出し低い順に並べる awk '$2 <= 100{print}' keisan1.txt | sort -k 3,3n | head -n 3 > keisan2.txt #距離のデータを除いた出力ファイルを新たに作成 cat keisan2.txt | awk '{print $1}' > resolt2.txt cat keisan2.txt | awk '{print $3}' > resolt1.txt paste resolt1.txt resolt2.txt > resolt.txt echo "100km以内にある光害指数が低い場所は" cat resolt.txt rm *.txt rm edited_data.csv