Tukubai世間はゴールデンウィークですがいかがお過ごしだろうか?そんなの関係なくやること満載な上に、第22シェル芸勉強会の福岡サテライト会場を開催して更にフラフラになっているが、一体どういうことなのだろうか??ということで、参加者の皆様お疲れ様である。午前の部は、福岡サテライトでは独自の初心者向け内容をやった。午後は今回も期待に違わず、参加者全員の脳天からオーバーヒート煙がモワモワと上がりまくりであった。参加者は途中帰宅した方などを含めると8人だった。イベントページはこちら。atnd.org本家イベントページはこちら。usptomo.doorkeeper.jp大阪サテライトについてはこちら。5f01b3bc1d81c1fae2378cdc89.doorkeeper.jpkunst1080.hatenablog.comTwitter投稿まとめはこちら。togetter.comイントロシェル芸はコンピュータに頑張ってもらうためのスキルなんじゃない?ってことで。福岡サテライトでは比較的初心者の方が多い?と感じていたため、午前の部は私が準備した入門編的な内容について話をしてみた。内容は「シェルで繰り返し処理」について。制御構造やxargs、コマンド列作成してシェルへブチ込む、フィルタコマンド、という流れで話を進めてみた。お題があまり良くなかったかもしれない。speakerdeck.com東京本家であっていた午前の部は、資料があれば後で見てみたい。昼は皆さんで外に食事に出かけた。久しぶりに一風堂でラーメンを食らう。午後の部さて午後は初心者も手練れも死んでよし!な時間だ。今回もなかなか歯ごたえがある内容で、上田会長いつも問題作成お疲れ様です。??ヤバイの???宇宙人なの????今回の問題はこちら。上田ブログ問題と解答はこちら。上田ブログ各問題について、福岡サテライトで私なりに解説した内容や解答例を載せておく。Q1中央値を出すのはどうするか?まあ真ん中のデータを持って来ればええのだが。解けなかったので上田会長の解答例を参考にした。awkを知らない方がいらっしゃったので、まずはデータを並び替えて横にするところまでのやり方を説明した。8残りはawkの$1やNRやNFについて説明しながら、上田会長の解答例を解説した。Q2ギ・ギブ・・ナニコレ・・・。カレーライスと醤油ラーメンをそれぞれ別の行にして、awkでNR==1とNR==2の時にゴニョゴニョするとかかなあと思ったが、敗北。'\n'カレーライス醤油ラーメンカレーライスを縦に並べて、左に空白を入れるにはどうすればいいのか?という質問が出たので、こんな感じかなと解説した。-oオプションが驚きだったようだ。スQ3ようやく太刀打ち出来そうな問題。Tukubaiコマンドを解禁。行番号を右側に付けて、第一フィールドを優先キーにしてsortする。6あとはTukubaiのyarrコマンドで簡単。6Tukubaiコマンドを使わなければ、awkの連想配列で解ける。6逆に復元するにはこんな感じ。Tukubaiコマンド利用。$1}'aaabbbbababaaaabbbaaabbbbabababbbbbaQ4なんとか解けた・・・考え方は、実行するコマンド列を作ってシェルにブチ込む方法。素数の列挙方法も解説した。$2}'2357列挙した素数からsedの命令コマンドを作成。Q4あとはコマンド列をパイプでシェルに食わせる。-cの定番処理で集計。りんごQ4まで終わって一旦休憩。この時点でノーミソオーバーヒート。Q5さて午後の部後半開始。難問・・・とりあえず1から12までの組み合わせを出してみるかと考えた。組み合わせ出すにはbashのブレース展開かな?まずは実行するコマンド列を作成。{,1}{,2}{,3}{,4}{,5}{,6}{,7}{,8}{,9}{,10}{,11}{,12}そこからパイプでシェルに食わせて組み合わせ出力。head12111112101012....12345678911121234567891012345678910121234567891011123456789101112ただこれだとダメだ。本当は各数値の間に空白で区切りを入れたいのだが・・・ギブアップ。これはsedの置換コマンドを作成すればいい。sedの置換コマンド文字列を作成する。-オプションで標準入力から食わせれば良い。Q6_1出力は省略Q7これわ???多分UNIXのお勉強な問題。-9したりすればええんじゃ、という話をしたり。上田会長からはexecの話とかも。Q8最後はまたちょっと難問というか何というか。要するに関数名を抜き出せばええのん?ということで下記のように抜き出す。nazo(void)後はこれを挿入すればええのだが、どうしようか?というところでタイムアップ。上田会長の解説を聞くことにした。3問解けたのでよしとする。皆さんへの解説をどうするかで頭フル回転だった。Tukubaiとかちょっとした話をした。こんな難問奇問にもかかわらず、参加者が少しずつ定着してきた気がする。午前の部の初心者向け内容も大事な気がしてきた。はてなブログPro情報処理ってもっとシンプルにならないだろうか?PKI関連、RubyやPHP等のLL、シェルスクリプト、シェル芸、ユニケージ見習い未満。シェルスクリプトとシェル芸はきっと違うんですよ。JPはてなブログをはじめよう!papiroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。