名前 塩川智之
担当情報実験機 joho 01
PC上にどこでもいいのでディレクトリを作成してください。 その後そのディレクトリの下に上のURLにあるファイルを置いてください。その後ファイル名をquiz1.shと変更してください。 同様にしてITPASSサーバー上のデータファイルkadai1_data.tar.gzを同じディレクトリに置き、tarコマンドを用いて解凍してください。その後先程のquiz1.shを解凍したことによって作られたkadai1_dataというディレクトリに移動させてください。 chmodコマンドでユーザーに実行権限を与え、./quiz1.shでシェルスクリプトを実行してください。
awkコマンドの使い方について参考にした。
sortコマンドについて詳しくまとめましたsortコマンドの具体的な使用方法を調べた。
sedコマンドsedコマンドの使い方を調べた。
pasteコマンドについて詳しくまとめました最後の出力ファイルの作成の際に参考にした。
tailコマンドについて詳しくまとめました ヘッダーの除去に役立てた。
まずファイルによって必要となるデータがどの列に存在しているかがバラバラであったため、スクリプト作成の初手がなかなか思いつかなかった。 運良くすべてのデータの四列目に項目が存在していたことから、四列目を切り出して一つひとつの項目を切り出し変数として定義し、それが年月日、最高気温、平均気温であれば、もとのデータのその列を切り出せばいいのでは、とひらめき作業が進んだ。 列を切り出す際にはawkコマンドの恩恵が非常に大きかった。 その後各年ごとの、年月日、最高気温、平均気温のみで構成されるファイルを作ったが、そのために仮に今回の課題が10年間ではなく、もっと幅広い年数で調べなければならないものであったら、ファイルの作成に時間がかかったり、容量的に実行できなくなる可能性があるなと感じた。 また、ループを利用しているので、年数が更に増えても大丈夫なように汎用性を持たしたが、仮にデータが続いているものでなく、何年かの間隔がるものだったら具合が悪いなとも感じた。 工夫はやはりループだが、そのためにファイルを大量に一時的に作成してしまうということと、不連続なデータの処理ができないというデメリットがある。 データの並び替えはsortコマンドが活躍した。多くのオプションがついているため非常に便利だった。
問1と同じことを、quiz2,kadai2として行ってください。 光害指数を検索したい地名を都道府県名、市町村名の順に入力してください。その際半角英数大文字かつ市名、区名などの間にスペースを開けずに入力してください。
この課題もやはりawkコマンドが大活躍した。各列に作業を行うときにawkコマンドでその都度列を指定することで作業が大幅に捗った。この課題で最も厄介だったのはエラー処理の設定である。grepコマンドを応用することで都道府県名と市町村名の不一致をエラー処理できるのだと知るのにかなり時間がかかったし、その応用方法の模索にもかなり時間がかかった。 その後はsortコマンドやtailコマンドといった課題1で習得したコマンドを駆使することで最後までたどり着くことができた。 工夫としては、強いて言うならば、ある行を切り出す際にtailコマンド、headコマンドを使い分けたことだと思う。headコマンドを最後に採用したことにより光害指数が低い地域を3つに限らず、様々な数出力可能となっている。