#!/bin/bash #県名を入力させる function ken_nyuuryoku () { echo "県名を入力してください" read kenmei if grep -q -w "$kenmei" kadai2_data.csv ; then cat kadai2_data.csv | grep -w "$kenmei" > kkadai2.csv #入力した都道府県のみのデータファイルを作成する else echo "名前が一致しません" ken_nyuuryoku #関数により、再帰呼び出し fi } ken_nyuuryoku #市町村名を入力させる function sityoson_nyuuryoku () { echo "市町村名を入力してください" read sityosonmei if grep -q -w "$sityosonmei" kkadai2.csv ; then echo "光害指数は" grep -w "$kenmei&$sityosonmei" kkadai2.csv > kkadai3.csv #選択した都道府県のデータファイルから入力した市町村のデータを抽出する else echo "名前が一致しません" ken_nyuuryoku sityoson_nyuuryoku #関数により、再帰呼び出し fi } sityoson_nyuuryoku awk -F"," '{print $4}' kkadai3.csv #光害指数を表示する tr -d '\r' < kadai2_data.csv > kkadai2new.csv #改行コードを変換する #cat kadai2_data.csv > kkadai2new.csv #改行コードの変換が必要でない場合 ido=`awk -F"," '{print $2}' kkadai3.csv` keido=`awk -F"," '{print $3}' kkadai3.csv` #入力した地点の緯度経度のみのファイルを作成する echo "100km以内にある光害指数が低い場所は" awk -F"," -v "ido=$ido" -v "keido=$keido" '(NR>1){print $4","((30.82*(ido-$2)*3600)**2+(25.1\ 1*(keido-$3)*3600)**2)**0.5","$1}' kkadai2new.csv > kkadai4.csv #光害指数、入力した地点からの距離、県名市町村名のファイルを作成する awk -F"," '{if($2 <= 100000){print $1,$3}}' kkadai4.csv > kkadai5.txt #入力した地点からの距離が100km以内のデータのみ抽出する sort -g kkadai5.txt | head -3 > kkadai6.txt #光害指数の小さい上位3位のファイルを作成する cat kkadai6.txt rm kkadai*.csv rm kkadai*.txt