前回に引き続き鬼の忙しさが続いていたが、忙しさに切れ目・・・しかし本当に若干の切れ目・・・なんとかシェル芸勉強会の福岡サテライトを開催することができた。今回も参加いただきありがたや。午前中は会社の会議の後、昼からはシェル芸地獄というなかなかハードな一日だった。10月になったけど昼は暑いよ。今回は総勢4人の参加者が集った。久しぶりの参加の方もいらっしゃった。上田ブログ(上田会長による)Togetterまとめtogetter.com(くんすとさんによる)大阪サテライト会場の報告www.kunst1080.net午後の部ということで今回は午後の部のみ。今回もイントロのスライドとか準備出来ず。9月号と10月号の宣伝をしたくらいだ。今回の問題と解答は、下記の上田さんブログを参照のこと。上田ブログ問題が難しい場合は関連情報の解説や補足を重視して、今回も福岡サテライトなりのペースで進めていくぞい。Q1行をまたいだ置換の問題。工夫すればsedで出来そうだがわからん・・・解答例を後から見ることにして、福岡では補足や解説が重要なのでsedの後方参照やyコマンド、拡張正規表現などの説明をした。後方参照出来る数は9個までだよとか。sedの-rオプションで拡張正規表現が使える。参照したい部分の囲みにバックスラッシュが不要。trコマンドでも出来る。sedより高速だが動きが違う部分も。aaaaaa解答例ではPerl正規表現のルックアラウンドアサーションを使うということだった・・・復習せにゃ。Serverなどでも利用可能だよとか補足解説。ExpressionsQ2上の行に合わせたインデントをする。Vimのインデントコマンド=で出来ないか?と思ったが、わての実力では出来なかった・・・Vimでやっている人がいた。2017年10月7日ちなみにJavaScriopt(node)で解いている人もいて、もう意味がわからない。2017年10月7日Q3問題の図形を見て素数がすぐに出てくるのは変態。シェル芸界隈では定番になってきているが福岡サテライトではまだ十分知られていないので、素数列挙の定番ワンライナーを解説。$2}'235711131719後はawkで頑張ればなんとかなりそう。いうことで最終的には会長の解答に。Q4福岡サテライトの参加者は、ASCIIコードやバイナリデータの扱いに慣れていない方が多かったので補足解説。BSD版だとマルチバイトに対応してるよ。vim付属のxxdコマンドで16進数表記。-bオプションで2進数表記。....Q5Q4でのASCIIコードやバイナリデータに解説してたら、あまり時間が無くなる。解答例に出てきたプロセス置換について解説をした。4シェルの本質はコマンドの実行とプロセス管理、ファイルをベースとしたデータ入出力の管理、といったことを解説。補足として/dev/urandom、/procファイル、bashのtcp通信機能など、ファイルをベースとした機能も。乱数取得のワンライナー。trの-dcオプションについても補足解説。head5185330642494172496880401826294953975155777600335122681614493516241602266139433970456199317999489264Q6UTF-8な日本語ひらがなを小文字に変換する問題。参加者から文字コードをズラせばいいんじゃない?という意見が出る。6e38182e38181ということで、3バイト毎にまとめてコード番号を1引けば良さそう。いうことで考えた解答例がこちら。-rぁぃぅぇぉbcコマンドについては知られていなかったので補足解説。bashやbc自体の履歴機能が使えるので、繰り返し計算する時の電卓替わりにも便利だよ。Q7アニメーションを作る問題。そもそも端末でアニメーションを作るにはどうすればいいか?という解説をした。1秒毎に@が一つずつ伸びていくにはこんな感じとか。上記のコマンドをシェルに流し込んで実行。shQ8全角5文字以内で折り返す問題。ギブアップ・・・Q9スクレイピングの問題。CSVにするのは諦め元素記号だけを抽出するものを作った・・・敗北感。's/<[^<>]*>//g'HHeLiBe(省略)FmMdNoLr午後の部終了後スライドの準備は出来なかったが、参加者の方でTwitterでxargsコマンドの使い方を色々悩んでた方がいらっしゃったのもあり、改めてxargsコマンドについて基本からおさえる話をした。'%05d\n'0000100002000030000400005コマンドを指定しない場合は、暗黙的にechoが実行される。10どんな処理をするコマンドか?xargsはHaskellやRuby、JavaScriptのmapに似ており、配列的なデータに対して繰り返し同じ処理を施す。配列内の数字を2倍にする処理を考える。]オプション-nオプション一度に処理する数を指定-Iオプション通常はコマンド列の最後に渡すが、埋め込む文字列を指定して自由にコマンド列を作成可能。+%F2017-10-082017-10-092017-10-102017-10-112017-10-12-0オプションディレクトリ名やファイル名に空白などがある場合に便利。file複数のコマンドを実行するには?複数のコマンドやパイプなどは実行出来ないが、shやbashの-cオプションを使うことでカバー可能。1秒毎に1カウントアップするワンライナーがこちら。1;'12(省略)910-Pオプション並列処理が可能。「真・マイナンバーシェル芸」の記事を紹介。あとはImageMagickとの実用的な組み合わせで、画像ファイルを再帰的に選択してフォーマットの変換やサムネイル作成の処理をするワンライナーを紹介したり。長辺が100x100ピクセル以内のサムネイル画像を作成。ファイル名に-sを追加。@-s.png他にはcurlコマンドでデカイデータをPOSTする際にコマンドライン長制限の問題が出て困った、という話題が上がった。これについてはデータをファイルから読んで出来るのでは?と予測。curlのマニュアルを見るとファイル名に@を付けて指定すれば良さそう。調べて見るとファイル名に@を付ける方法で良さそうだ。梅雨なのにあんまり雨が降らずこれはアカンと思う今日この頃。起きるとそこは雪国だった。はてなブログPro情報処理ってもっとシンプルにならないだろうか?PKI関連、RubyやPHP等のLL、シェルスクリプト、シェル芸、ユニケージ見習い未満。シェルスクリプトとシェル芸はきっと違うんですよ。JPはてなブログをはじめよう!papiroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。