ITPASS 実習レポート 1

名前 荒木将允

担当情報実験機 joho07

問 1

スクリプトの URL

quiz1.sh.txt

スクリプトの使い方の解説

PC上の任意の場所にディレクトリを作成し,上記のURLにあるファイルをコピーして作成したディレクトリ下に貼り付ける.
その後,chmodコマンドを用いてパーミッションを変更して,ユーザーに実行権限を与える.
同じディレクトリにitpassサーバ上に公開されているファイル"kadai1_data.tar.gz"を置き,解凍してcsvファイルを取り出す.
"./"のコマンドでシェルスクリプト実行すると,結果が表示される.

実行結果へのリンク

問1の実行結果

参考資料

Linux入門 Linuxコマンド集 コマンドリファレンス
諸々のコマンドの使い方の勉強に利用した.

【初心者でもわかる】Linuxシェルスクリプト入門 まとめました
上記のURLと同じ目的で利用した.

awkコマンドへ値を渡す手法のまとめ
筆者:@gin_135 (Qiita)
awkで必要なデータのフィールドを探索する方法を考える際に利用した.

sortコマンドについて詳しくまとめました 【Linuxコマンド集】
月日の早い順,平均気温の高い順の並べ替えの方法を調べる際に利用した.

工夫したこと, 感想

ファイルによって必要なデータのあるフィールドが違うので, そのフィールドを切り出す方法を考えるのに時間を費やした. 結局awkで端から順に探索し, 見つかった時点でdoループを抜けてdoのために使用していた変数を利用してフィールドを抜き出した.見つかるまで探索をするため,データのフィールドが何列増えても対応できる.
また,読み取るファイル名の年を変数で指定しているので, 少しスクリプトの数字を変えるだけで任意の年数分の計算をすることができる拡張性を持たせた.
最後に途中で生成したファイルを消してディレクトリ内が整理されるようにした.

問 2

スクリプトの URL

quiz2.sh.txt

スクリプトの使い方の解説

PC上の任意の場所にディレクトリを作成し,上記のURLにあるファイルをコピーして作成したディレクトリ下に貼り付ける.
その後,chmodコマンドを用いてパーミッションを変更して,ユーザーに実行権限を与える.
同じディレクトリにitpassサーバ上に公開されているファイル"kadai2_data.tar.gz"を置き,解凍してcsvファイルを取り出す.
"./"のコマンドでシェルスクリプト実行する.

まず検索したい県名を聞かれるので,半角英数大文字で入力する.
入力する際は,「HYOGOKEN」のように長音の母音部分は書かない.

次に市町村名を聞かれるので,県名と同じように入力する.
「KOBESHINADAKU」のように,市名と区名の間にスペースは入れない.

実行結果へのリンク

問2の実行結果

参考資料

問1に記載している参考資料に加え,以下のサイトを利用した.

grepコマンドの詳細まとめました【Linuxコマンド集】
県名や市町村名を検索するシステムを考える際に利用した.

【すぐわかる】シェルスクリプトのuntilの使い方
入力された県名や市町村名がデータと一致するまで聞き返すシステムを考える際に利用した.

改行コードの変換
改行コードの確認と変換の方法を調べた.

シェルスクリプトでOSを判別する
OSの判別方法を調べた.
筆者:@UmedaTakefumia (Qiita)

工夫したこと, 感想

市町村名入力後のファイル内検索で「県名&市町村名」を指定することで, 指定された市町村が直前に入力された都道府県内に無いときに再度入力を求めるようにした.

デバッグをしていくうちに,配布ファイルの行末にある改行コードがawkによってフィールドと一緒に抜き出されてしまい最終列のフィールドが標準出力に出てこないことがあった.改行コードはOSに依存するものなので, 配布ファイルが情報実験機で正常に読み取れるように置換コマンド(tr)を用いて改行コードを変換している. シェルスクリプト内で実行環境のOSがUNIX系かWindows系か, おそらく無いと思うがMac OS9以前であるかを判別して改行コードの変換を分岐させている.

課題1と同じように途中のファイルは削除しているが, 3位以降の光害指数の低い場所を調べたいときはrmコマンドをコメントアウトすることでファイルを残して読むことができる.

共同作業した人の名前

河合佑太(TA)