ヘコたれそうな、というよりヘコたれる超忙しさだったが、なんとかシェル芸勉強会の福岡サテライトを開催することができた。今回も参加いただきありがたや。会場は久しぶりにAIP Cafe。
今日は結構涼しくなった。しかし午前中は雨が降って湿度が高め。歩いて会場まで来ると結構汗だく。 今回は総勢6人の参加者が集った。初参加の方もいらっしゃった。
勉強会募集サイト
本家東京会場募集
大阪サテライト会場募集
福岡サテライト会場募集
イベント報告関連
今回のTLはどうだったのかな?
(上田会長による)jus共催 第30回危念シェル芸勉強会の報告
jus共催 第30回危念シェル芸勉強会の報告 – 上田ブログ
(くんすとさんによる)大阪サテライト会場開催レポート
(上田会長による)Togetterまとめ
午前の部
「eval系超絶ワンライナー教祖」鳥海さんによるPerl入門の第二回だった。今回は本題?であるPerlの正規表現。大学の学部生時代はコンピュータはいっちょんわからんほうだったが、大学院生になってからはデータを扱うことが多くなり、データ処理のためにPerlやシェルスクリプトをやり始めた記憶がある。ちなみに学部は情報系ではなく理学系だった。
昼食
お昼は会場近くのラーメン屋さん「一風堂」。知らなかったのだがここが本店らしい。なかなかに美味い。
http://www.ippudo.com/store/daimyo/
Webシステムでの決済に関する話題が上がったり。決済やったことないなあ。
午後の部
今回はイントロのスライドとか準備出来てなかっ他ので、とりあえず一息ついた。せっかくなので持ってきたSoftware Design 9月号の宣伝も。連載開始だ。
SoftwareDesign9月号、明日発売https://t.co/hsW7dVTxPd
— SoftwareDesign (@gihyosd) 2017年8月17日
上田監督率いるシェル芸最強チームが仕掛ける、衝撃の新連載『シェル芸人からの挑戦状』推参!
今回の問題と解答は、下記の上田さんブログを参照のこと。
【問題と解答】jus共催 第30回危念シェル芸勉強会 – 上田ブログ
今回も福岡サテライトなりのペースで進めていく。自分なりに考えて解説した内容は下記の通り。
Q1
Markdown形式で書かれたテキストファイルが、複数のディレクトリ内にばらまかれている状況。簡単なようでうまくさばくことが出来ず、解答は会長の解答を参照した。grep
コマンドの-m
オプションについて知見を得た。
Q2
これはsed
の置換に慣れるための練習問題。後方参照や正規表現の最長一致についてなど解説しながら考えた。解答は会長の解答を参照した。
正規表現の最長一致についてはgrep -o
を使ってこんな感じで解説。"
でクォーティングされた範囲を指定する場合について。
# "が複数ある場合には最長の長さでマッチする。 $ echo '<li><a href="/files/https://blog.ueda.tech/">クソブログ</a><a href="/files/huge.html">ふげ</a></li>' | grep -o '".*"' "/files/https://blog.ueda.tech/">クソブログ</a><a href="/files/huge.html" # "[^"][^"]*"という具合に指定すれば意図した範囲にマッチする。 $ echo '<li><a href="/files/https://blog.ueda.tech/">クソブログ</a><a href="/files/huge.html">ふげ</a></li>' | grep -o '"[^"][^"]*"' "/files/https://blog.ueda.tech/" "/files/huge.html"
Q3
力技でゴリゴリやればいいのだが、pandoc
の使い方を復習する問題となった。pandoc
便利。
Q4
GitHubにリポジトリを作るhub
コマンドってのがあるのを知った。へえー。福岡ではnc
コマンド(netcat)について少し解説をした。
Q5
色々やったがうまくいかず。福岡ではbc
コマンドについて解説した。例えば1行目と2号目を掛け算する場合はこんなふうに。
$ echo -e '5\n8' | xargs | tr ' ' '*' | bc 40
Q6
フィボナッチ数列について色々調べてみた。自然界に多く存在し、花の花弁数やヒマワリの種の数、その他黄金比率など色々と役に立つらしいスゴイ。そんなことを調ベているうちに、問題を考える時間が無くなる始末。
Q7
ようやくまともに解けた唯一の問題。と言ってもシェルのループを使っているが。会長の解答例と同じ。
$ seq -w 00 99 | while read n; do grep -q $n nums || echo $n; done 31 33 42 43 56 61 64 65
Q8
アルファベットをasciiコードに変換して、引き算して数を数える方法を考えた。結局何行目が一番多いか?という解答しか思いつかず。MacやFreeBSDの場合は、3つ目のコマンドはgsed
を使う。
$ cat alphabet | xxd -p -u | sed 's/2D/-/g;s/0A/\n/g' | ( echo ibase=16; cat ) | bc | tr -d '-' | awk '{print NR,$i}' | sort -k2,2nr | awk 'NR==1{print $1}' 2
午後の部終了後
今回はあまりの忙しさゆえに、イントロスライドやLTなど準備が出来ず。福岡サテライトでは基本的に私の解説や話を中心に進めていっているのだが、参加者の方にも何か話題を提供してもらったりする方向にしていきたいなあと思ったり。
大阪サテライトを主催されているくんすとさんのこの意見が、実にマトを得ていると思った。ハードルを低くしていきたい。
なんなら自己紹介だけとかコマンド一発打つだけとかそれくらいのでもおkです!! #シェル芸 #大阪
— くんすと@埼玉両日 (@kunst1080) 2017年8月26日