FreeBSDもう12月に突入したことが信じられない今日この頃だが、朝の寒さにちょっと負けそうになりながらもシェル芸勉強会の福岡サテライトを開催させていただいた。会場は株式会社レスコ様の会議室。素敵な会場でいつもありがたい。今回は総勢5人の参加者が集った。午前中は鳥海さんによる、変態としか思えない領域にも勇敢に立ち向かう激・Perl講習会。's/(.)(?=(\d{3})+$)/$1,/g'1,234,567内容が激しすぎて読むのに「覚悟」が必要な鳥海さんによる資料をご覧あれ。バックトラックの処理が見え見えになる、Perlの正規表現デバッグモードとかの話も。昼食いつも行く餃子の王将とは違う中華料理店に行ってみたら、なかなか美味しかった。午後はいよいよシェル芸勉強会の問題。2017年11月30日twitter.com問題と解答例はこちら。上田ブログ今回も福岡サテライトなりのペースで、フォローや解説を重視しながら進めていった。Q1抜けた数字を空行で飛ばして出力する問題。上田会長の解答例はawkの配列を使ったものだった。福岡からは1から9までの数字の列と重複比較する解答例を出しておいた。-cで重複数をカウントしておく。9あとは重複数が1の場合は空行を、2の場合はそのまま出力で完成。$2}'14679重複しているかどうか?で考えるということで、この問題はcommコマンド案件だなと思ってたら、やっぱり解答例が出ていた。commコマンドの解説もしておいた。2017年12月2日twitter.comQ2Q1の発展系だが・・・ギブアップ。ASCIIコード使った解答を考えていたら下記の解答例を発見。2017年12月2日twitter.com下記の補足解説をしておいた。awkのファイル名引数ファイル名指定の代わりにvar=valueの指定が可能。それは変数への代入であると解釈されます。BEGINブロックを実行したあとに行われます)。分割するためのセパレータを実行時に変更するのに便利です。状態をコントロールするのにも便利です。10進数でasciiコードが97の文字を出力。-raQ3問題の意味を間違えていた・・・素数のポート番号を取り出すと勘違い。Q4rsコマンドで行列ひっくり返したり、tacコマンドで上下反転させたり、色々考えたがギブアップ。会長の解答を見てもまだピンと来ず・・・Q5多分正規表現の問題だと思ったのだが、あえて文字コードを使った解答を考えた。Macのodコマンドを使って文字コードの対応を確認してみる。ウムラウトは16進数c3で始まる2バイト長の文字のようだ。MacやFreeBSDなどのBSD系OSに付属するodコマンドは、マルチバイト文字の出力に対応しているので分かりやすい。67(以下省略)ちなみにLinux付属のGNU製odコマンドは、下記のようにマルチバイト文字部分が表示出来ない。67(以下省略)勉強会の時間では解答出来なかったので、後ほど考えた解答がこちら。出来ればループを使わず解きたかったが上手くいかず。実行速度の効率は遅いがとりあえず気にせず。1単語ずつxxdコマンドで16進数ダンプをとる。後の処理を考えて各単語の最後に改行0aを入れておく。-p'77c3a473636873740a776173680ae5b1b1e794b0780a(以下省略)grepでc3で始まる4文字(ウムラウト)の16進数がある行を選び、xxdコマンドで元の文字に戻す。改行付きで16進数にしていたので、各単語が改行で区切られて出力している。ÜbelÄrztinQ6Twitterの画面内にツイート数が表示されているので、スクレイピングしてツイート数の変化を検知すれば良い。スクレイピング自体はcurlを使って下記のようになる。','18690自分のTwitterアカウントをcurlコマンドで5秒毎に監視する解答例がこちら。doneMac付属のcurlコマンドだと圧縮された状態で出力されるので--compressedオプションで解凍している。linesQ7sedコマンドで置換や、trコマンドで行列置換や考えたがギブアップ。ebanさんがImageMagick画像処理を使って解答していた・・・ふえぇ。ImageMagickででけた。2017年12月2日twitter.comUbuntuで実行したら最後に整形が必要だったので、追記してみた。ImageMagickのバージョンは6.8.9-9。23000000000000000010000000000000000111111110000000001100011111111110000000111100011111111110000000110000011111111000000000000000000001000000このImageMagickでの解答、Macで実行すると上手くいかず。ImageMagickのバージョンは7.0.7-13。出力結果が解答と違うQ8ギブアップ・・・Unicodeプロパティを使った正規表現で出来るようだ。全体を通して午前の部も午後の部も、難易度は高めだったか?福岡会場の場合はサポート重視でやっていく必要がまだまだ高いのが現状でもあるが、自分としてはアドリブを効かせてポイントを説明したりする訓練の場でもある。参加者の方が主体になれるようにするにはどうするか?という点も悩みではある。続けていくことで何か見えてくるかもしれない。先日はTwitter上で、福岡独自に開催されたら面白そうなのにという意見もいただいた。難易度を下げた内容でやって欲しい、という意味かもしれない。実はシェル芸勉強会コワイけど興味ある、という方々が福岡にはまだいらっしゃるのかもしれない。梅雨なのにあんまり雨が降らずこれはアカンと思う今日この頃。起きるとそこは雪国だった。はてなブログPro情報処理ってもっとシンプルにならないだろうか?PKI関連、RubyやPHP等のLL、シェルスクリプト、シェル芸、ユニケージ見習い未満。シェルスクリプトとシェル芸はきっと違うんですよ。JPはてなブログをはじめよう!papiroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。