ITPASS 実習レポート1

名前 橋本愛鈴

担当情報実験機 joho05

問1

スクリプトのURL

quiz1.sh.txt

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

任意の場所に新しいディレクトリを作り、その中にquiz1.sh.txtを移動させる。その後に、quiz1.sh.txtをquiz1.shというように拡張子を変更し、テキストファイルをシェルスクリプトとして実行できるようにする。そして、ITPASSサーバ上のkadai1_data.tar.gz(置き場所:/home/itpass/dc-arch/exp/fy2018/180807/practice_kadai/kadai1_data/tar/gz)を作成したディレクトリの中にダウンロードし、解凍する。解凍をした際に、作成したディレクトリの中にkadai1_data.tar.gzというディレクトリが出来、その中にcsvファイルが入っている場合は、シェルスクリプトの入っているディレクトリと同じところへすべて移動させる。csvファイルをすべて移動させた後、chmod 755 quiz1.sh で実行権限を与え、./quiz1.sh を入力するとシェルスクリプトが実行され、求めたいデータが表示される。

実行結果へのリンク

問題1の実行結果

参考資料

小寺君のレポート
初めの必要要素を抜き出すときに参考にした。 AWKリファレンス|UNIX&Linuxコマンド・シェルスクリプト リファレンス
awkに変数を入れるときに手詰ったので参考にした。

while 文の使用方法|UNIX&Linuxコマンド・シェルスクリプト リファレンス">
while文にif文を組み込む方法を調べた。

AWKプログラミングの真髄の1つ フィールド(列)を操る基礎テクニック
年月月日の文字の挿入に参考にした。

【 awk 】コマンド(基本編その4)――テキストの加工とパターン処理、printとprintfの使い方:Linux基本コマンドTips(118)-@IT
結果表示の文字列がずれていたので、揃えるためにprintfを利用した。

工夫したこと、感想

年月日、最高気温、平均気温の列を指定するときに、列番号ではなくて項目の文字列で抜き出すために、変数やgrepコマンドを利用しようと考えたが、うまくいかずに進めることが出来なかったので、小寺君のレポートを参考にさせていただいた。抜き出したデータが/と,の二つの区切り文字で構成されていたので、日付順に並べたうえで、同日の場合は平均気温の高い順に並べることが困難だった。同じ理由で、完成データに文字を反映させることも難しかった。その問題を解決するために、いろいろな工夫をした。awkコマンドを使っていくうちに、シェルスクリプトの基本的な書き方を理解することが出来たと思う。

問2

スクリプトのURL

quiz2.sh.txt

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

任意の場所に新しいディレクトリを作り、その中にquiz2.sh.txtを移動させる。その後に、quiz2.sh.txtをquiz2.shというように拡張子を変更し、テキストファイルをシェルスクリプトとして実行できるようにする。そして、ITPASSサーバ上のkadai22_data.tar.gz(置き場所:/home/itpass/dc-arch/exp/fy2018/180807/practice_kadai/kadai2_data/tar/gz)を作成したディレクトリの中にダウンロードし、解凍する。解凍をした際に、作成したディレクトリの中にkadai2_data.tar.gzというディレクトリが出来、その中にcsvファイルが入っている場合は、シェルスクリプトの入っているディレクトリと同じところへすべて移動させる。csvファイルをすべて移動させた後、chmod 755 quiz2.sh で実行権限を与え、./quiz2.sh シェルスクリプトが実行され、都道府県名と市町村名の入力が求められるので、大文字ローマ字で入力する。すると、求めたいデータが表示される。

実行結果へのリンク

問題2の実行結果

参考資料

grepコマンドの戻り値
都道府県名、市町村名の正誤判定を行うときに使用した。

工夫したこと、感想

sedコマンドで&を,に変更し、はじめのデータをコンマ区切りのcsvデータとして処理するように持ち込んだ。入力されたものと一致するデータだけを抜き出して扱うことで、正誤判定を自分なりに直感的にできるようにした。grepコマンドを用いたときに、マッチした行があった場合の戻り値が0であることを利用して、入力された文字列と、データの文字列が完全一致しているかどうかの正誤判定を行った。距離の計算では、awkコマンドを利用して、入力された地点の緯度経度を変数として定義することで、計算を行いやすくした。自分が分かりやすいようにシェルを組み立てていくうちに、かなりの量の余分なファイルが作成されたため、最後にそれらをすべて削除している。これにより、繰り返しての実行が可能である。