今回はAWKで実際の温度データを処理してみます。ここでは日本の真ん中あたりにある長野県松本市の気温データを使用します。
出典:気象庁ホームページ
この年間の温度データをタブ区切りテキストとして保存し利用します。ファイル名はdata.txtとしこれまでと同じようにデスクトップのsampleディレクトリに入れておきます。なお、温度データ内に幾つかの記号が含まれているため、それらの記号は削除してあります。また、執筆時点(2024/12)でのデータとなっているため一部の温度データは暫定となっています。
data.txtの中身は以下のようになっています。
○必要なデータを表示
これまでのAWKの復習も兼ねて順番に処理していきます。まず、全データを表示して見ます。これは以下のようにコマンドを入力します。
awk {print} data.txt
データによっては先頭の1行が不要な場合があります。項目を示すヘッダーがついていることがありますが、データを処理する場合は不要なことがあります。
awk 'NR>1{print}' data.txt
それでは次に2000年より後のデータを表示してみます。この場合、年数は最初の1列目になっていますので、この値を読み込んで2000年より後のデータかどうかを判別すればよいことになります。最初の1列目の値は$0に入りますので以下のように$0>2000として判断します。その際、先頭の1行もスキップする必要があるので&&を使って複数の条件を満たすように指定します。
awk 'NR>1&&$0>2000{print}' data.txt
1月の気温だけを表示するには以下のように指定します。
awk 'NR>1{print $2}' data.txt
年数を表示しないとわからない場合は以下のように$1を加えます。
awk 'NR>1{print $1,$2}' data.txt
データが何年分あったか確認したい場合は以下のようにします。今回のデータの場合、先頭の1行分を除く必要があるため行番号を示すNRから1を引きます。
awk 'END{print NR-1}' data.txt
無理にAWKで処理しなくてもwcコマンドとパイプを使う方法もあります。
awk 'NR>1{print $1}' data.txt | wc -l
○1月の最低気温と最高気温を求める
次に最低気温と最高気温を求めてみます。
AWKで1月のデータを出力しsortコマンドで並び替えれば簡単にできます。
awk 'NR>1{print $2}' data.txt | sort -n
上記のコマンドではすべてのデータが表示されてしまいます。必要なのは最低気温、つまり先頭1行だけです。この場合はheadコマンドを使って1行だけ抜き出します。
awk 'NR>1{print $2}' data.txt | sort -n | head -n 1
最高気温の場合は先頭ではなく最終行なのでtailコマンドを使えばよいことになります。
awk 'NR>1{print $2}' data.txt | sort -n | tail -n 1
.
![美酵 ビファ クレンズドリング 栄養機能⾷品 30包約30日分 [ 発酵 と マグネシウム の力で 美容と健康をサポートし 満腹感 のある 置き換えダイエット ]](https://m.media-amazon.com/images/I/51FnYyHl-kL._SL500_.jpg)
![明治薬品 シボラナイト2 150粒(30日分) [シリアルナンバー付] [ ダイエットサプリ ブラックジンジャー ポリメトキシフラボン 腹部の脂肪を減らす ]](https://m.media-amazon.com/images/I/41U8wqxGJVL._SL500_.jpg)



![hiritu(ヒリツ) バランスリペアシャンプー&ヘアトリートメント オーロラ [シリーズ最高峰のツヤ] きらめき髪 ツヤ髪 浮き毛パヤ毛抑制 ダメージ毛を集中補修 PPT系洗浄成分 アミノ酸系洗浄成分 毛髪補修成分 カシス&パチュリの香り 香水シャンプー](https://m.media-amazon.com/images/I/41FoHN-YVXL._SL500_.jpg)





