LoginSignup
17
8

More than 5 years have passed since last update.

Linuxコマンドで天気予報を取得&表示するワンライン(on Mac)

Last updated at Posted at 2017-08-02

Linuxコマンドで天気予報を取得&表示するワンライン(on Mac)
MacのターミナルでYahoo!天気予報を取得、データを整形して表示するまでを行います。
Linuxコマンドで実現するので、Macじゃない人でもコマンドが使えたら真似できます。

はじめに

Macの人なら問題なく動作するはずです。Linux系なら問題ないです。
zsh on Macでしか動作チェックしてませんが、他の環境でもちょっと文字がずれるとか改行コードが違うくらいだと思うので、適宜調節してください。
GitHubで公開しているので、こちらからどうぞ。
https://github.com/arabian9ts/weather
zshrcなどに書いておけば、ログインしたタイミングで天気予報を確認できます╭( ・ㅂ・)و ̑̑ グッ !

プレビュー

preview.png
完成図はこんな感じになります。

コード

ワンラインなのでコードというのは仰々しいですが、、、

curl -s https://weather.yahoo.co.jp/weather/jp/40/8210/40133/8100001.html | tr '\n' ' ' | sed -e 's/<[^>]*>//g' | grep -oE ' - [0-9].*明日' | tr ' ' '\n' | grep -v '^$' | head -47 | tr '\n' '\t' | awk '{sub("時刻", "\n時刻 ");sub("天気", "\n天気 ");sub("気温(℃)", "\n気温(℃)");sub("湿度(%)", "\n湿度(%)");sub("降水量(mm/h)", "\n降水量(mm/h)");print}'

解説

パイプで区切ってあるコマンド単位で順に解説を書きます。

  1. curlでYahoo!天気予報のhtmlファイルの情報を取得
  2. htmlタグ消去のために改行コードを空文字に置換(>が行頭にくる可能性を潰す)
  3. <ではじまり>で終わる箇所をすべて消去(タグ消去)
  4. - *月**日というヘッドラインから明日の天気までの情報を切り出す
  5. 空文字を改行コードに戻す
  6. 空行を削除
  7. 必要な行までを抽出
  8. 以降データ整形

正規表現について

  • grep -v ^$^は次に来る文字が行頭にあるという意味($は行末) -> 空行
  • [^>][]で囲まれたグループを含まないという意味(行頭ではないから使い分け注意)
17
8
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
8