毎日特定のサイトからデータを持ってきてExcelのシートにまとめ、印刷して提出する。そんな作業もあるだろう。そうした作業は、自動化が可能だ。ここで使えるのが、前回紹介したデータを取得するためのコマンド「curl」、これまでの連載で紹介してきたデータ加工用のコマンドたちである。
例えば、天気予報のサイトから天気予報データを取得し、テキストとして表示させてみよう。
curlコマンドで対象のHTMLデータが取得できることは前回紹介した。今回の場合、次のように指定して実効する。
次に、取得したHTMLデータから欲しいデータだけを取得する。「曇り」という文字列をgrepコマンドで抽出してみよう。
どのように加工してもよいのだが、この場合だと「height=40」という文字列で絞り込むことができそうなので、次のように指定して実行してみる。
今回は、「alt=」という文字列の後に続く天気を表す文字列だけが取得できればよいので、次のようにさらに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'
当然、実行結果は先ほどと同じだ。シェルスクリプトだけ見ると何をしているのかわかりにくいが、加工の順序を追っていくと意味がわかるだろう。
業務の自動化は、将来の作業コストを減らす意味で投資でもある。ぜひとも、自動化できる部分をこっそり増やしていってもらいたい。