第44回シェル芸勉強会 大阪サテライト レポート
10/26(土) に開催された第44回シェル芸勉強会 大阪サテライト会場の様子をレポートします。
案内
今回松江はお休み。 1年ぶりに福岡サテライトが開催されました。
大阪サテライトの様子
参加者は4名、いつも参加されているメンバーでした。
久々の午前の部はぷる氏による JavaScript のオブジェクトについての講義。 個人的にはとても苦手意識のある JavaScript について解説していただきました。 JavaScript がこんなにややこしい仕様になっているのは、長い歴史の積み重ねがあるからでしょうか...?
— 次郎☁️[00:32:46] (@jiro_saburomaru) 2019年10月26日
講義中、いつもはうんこばかり流れているシェル芸タイムラインに、とても有用な情報が流されていました。 講師からの一方向のお話ではなく、参加者皆の知見が集まるのは素晴らしいです。
午後の部の前半4問は、数独をシェル芸で段階的に解いていくものでしたが、2問目の難易度がとても高かったように思います。 行指向でデータを扱うため、前後の行にあるデータも利用できるように工夫することが求められているようでした。
LT
「-(横線)難読化シェル芸」 - MSRさん
Unicode には 64 以上もの横線が収録されているそうです。大体一緒だろ。
横線を利用した新たなエンコード手法と、その実装の horizon コマンドを提案されました。
「structured-text-tools の紹介」 - 小原 一哉さん
dbohdan/structured-text-tools にまとめられている構造化テキスト処理ツールの中から、3つをピックアップして紹介されました。
発表内では csvquote
のメリットが少し理解しづらかったのですが、後で調べてみてとても有用だなと思ったので、ついでに紹介してみます。
CSV では、"..."
(ダブルクォート) 内の ,
(カンマ) をフィールドセパレータとして、改行をレコードセパレータとして扱わないようですが、そのようなデータを、awk, sort, cut のような UNIX コマンドで扱おうとすると、少し困ります。
例えば、以下のようなデータを2フィールド目でソートしたい場合。
$ cat sample.csv unko,3 "u,nk,o",5 "un ko",2
csvquote を通すと、ダブルクォート内のカンマは 0x1f (US; ユニット区切り)、改行は 0x1e (RS; レコード区切り) に置換されます。
$ cat sample.csv | csvquote | xxd 00000000: 756e 6b6f 2c33 0a22 751f 6e6b 1f6f 222c unko,3."u.nk.o", 00000010: 350a 2275 6e1e 6b6f 222c 320a 5."un.ko",2.
この状態で sort を実行し、csvquote -u で置換された文字を元に戻すことができるようです。
$ cat sample.csv | csvquote | sort -t',' -k2n | csvquote -u "un ko",2 unko,3 "u,nk,o",5
ちょっと扱い辛かった CSV がとても扱いやすくなって良い感じです。
紹介された GitHub リポジトリには、他にも便利そうなツールがたくさん紹介されていました。
「柿と杮(かきとこけら)」 - たいちょーさん
かきとこけら。一緒だろ(2回目)。
柿 と 杮 でバイナリを表現する手法と、その実装の kakikokera コマンドを提案されました。 こけらと同じく、肺の字のつくりは市ではないそうです。 しらなんだ。
LT で紹介されたコマンド類は、早速シェル芸botに追加してもらいました 🙌
おわり
久々に終日の勉強会となりとても疲れましたが、学びの多い一日でした。 講師の方、LT発表された方、参加された皆さま、ありがとうございました。 次回は年末頃でしょうか。またよろしくお願いします。