毎日特定のサイトからデータを持ってきてExcelのシートにまとめ、印刷して提出する。そんな作業もあるだろう。そうした作業は、自動化が可能だ。ここで使えるのが、前回紹介したデータを取得するためのコマンド「curl」、これまでの連載で紹介してきたデータ加工用のコマンドたちである。

例えば、天気予報のサイトから天気予報データを取得し、テキストとして表示させてみよう。

天気予報のページ

ハイライト部分の文字列を取り出すことにする

curlコマンドで対象のHTMLデータが取得できることは前回紹介した。今回の場合、次のように指定して実効する。

curlコマンドで天気予報データを取得

次に、取得したHTMLデータから欲しいデータだけを取得する。「曇り」という文字列をgrepコマンドで抽出してみよう。

grepコマンドで欲しいデータ(ここでは「曇り」)を探す

どのように加工してもよいのだが、この場合だと「height=40」という文字列で絞り込むことができそうなので、次のように指定して実行してみる。

特定のキーワード(ここでは「height=40」)で絞り込み

今回は、「alt=」という文字列の後に続く天気を表す文字列だけが取得できればよいので、次のようにさらにsedコマンドで文字列の抜き出しを行う。

sedコマンドで欲しいデータを抜き出す

後は、不要な文字列をgrepコマンドで排除するだけだ。すると、次のように欲しいデータだけ抜き出せる。

データの抜き出し完了

一連の処理をシェルスクリプトに整理すると、次のようになる。

#!/bin/sh

url=https://weather.yahoo.co.jp/weather/jp/13/4410/13101.html

curl $url 2> /dev/null                  |
grep 'height=40'                        |
gsed -E 's/alt="([^"]+)".+$/\n\1/'      |
grep -v '^<td'

当然、実行結果は先ほどと同じだ。シェルスクリプトだけ見ると何をしているのかわかりにくいが、加工の順序を追っていくと意味がわかるだろう。

業務の自動化は、将来の作業コストを減らす意味で投資でもある。ぜひとも、自動化できる部分をこっそり増やしていってもらいたい。