Mac
ワンライナー
シェル芸
Linuxコマンド
天気予報

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

More than 1 year has passed since last update.

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