/'しかし残念ながらUbuntuでは上記の解答はダメ。GNUのtrコマンドはマルチバイト文字に非対応みたいだ、ガーン。1-B.doc1A.doc3999D99?.doc399999999?.doc..(省略)..BSDのtrコマンドやodコマンドは、マルチバイト文字対応しているので便利なのだった。Q3これはまず日付の列挙をする必要がある。dateを使ったやり方はこちら。下記のような文字列リストを作成する。-オプションを付けてパイプで渡す。'+%Y%m%d'201801012018010220180103..(省略)..201812292018123020181231あとは2,3,5,7が4つ含まれる行を抜き出せば良い。awkのgsubコマンドは、正規表現にマッチした回数を返すとのでこんな感じになる。gsubコマンドは指定した文字列を破壊的に処理するので注意。'{d=$0;if(gsub(/[2357]/,"",d)==4)print}'201802222018022320180225..(省略)..201812232018122520181227Q4俳句を考える問題!?というより縦書き処理をしろという問題だ。'しぇるげいにん\nたなばたなのに\nひきこもり'しぇるげいにんたなばたなのにひきこもりここから縦書きに変換していく。横書きを縦書きに変換する時は、行を上下ひっくり返した後、行列逆転すれば良い。-Tを使って処理して見る。データの数を縦横揃える必要があるので注意。んあとは短冊に入れれば良いが、準備された短冊ファイルtanzakuを使ってないのでゴメンナサイ。awkの$1=$1の部分が意味不明に思う人が多いと思うので補足。OFSで出力の区切り文字を全角空白に指定しているが、これはフィールドの再構築を行わないと適用されない。そこでパターン部分に$1=$1のような処理を書いて、フィールドの再構築を明示的に指示。Q5えー下記のようにrevコマンドを単純に使ってもダメ。文字列がひっくり返ってるし、馬の顔の輪郭もヘンテコリンになる。||色々考えたけどどれも中途半端でダメだった。上田会長の解答を少し解説してみる。右側に文字を追加して、各行の文字数が並ぶように右端を揃える。||@@@@@@次に左右ひっくり返したものを下に追加する。同様な処理はteeコマンドとbashのプロセス置換を使っても可能だ。>/dev/nullは同等。||@@@@@@awkで3行目から11行目を抜き出す。大まかなポイントはここまでだろう。後は細かい処理を頑張るのみ。||Q6素数のみを丸囲み文字にする問題。16進数に変換してxxdで処理とか考えたけど時間切れ。上田会長の解答例以外だと、下記の解答例がシンプルだ。printfの出力フォーマットで%cを使えばよい、なるほろ。20Q7テキストファイル内に隠された、謎のバイナリデータを探す問題。下記はMac限定の解答。BSDのtrコマンドがマルチバイト文字に対応してるので。あとnlコマンドの練習も兼ねて。Designで連載中の「シェル芸人の挑戦状」から、更に上級問題。全体を通して今回も相変わらずの問題?だったが、毎度の事ながら問題作成されている上田会長お疲れ様である。大雨によりサテライト会場が大阪・福岡共に開催出来なかったのは残念だった。福岡へ参加予定だった方は、初めての参加者も多かったようで。次回もし予定が合えば、よろしくお願い申し上げる。福岡で独自に初心者向けを開催したい。プライベートやお仕事面で今は余裕が無く、なんとかしたい。世間はゴールデンウィークですがいかがお過ごしだろうか?そん...2016-04-09真・マイナンバーシェル芸マイナンバー。はてなブログPro情報処理ってもっとシンプルにならないだろうか?PKI関連、RubyやPHP等のLL、シェルスクリプト、シェル芸、ユニケージ見習い未満。シェルスクリプトとシェル芸はきっと違うんですよ。JPはてなブログをはじめよう!papiroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。