CommentsTweetPocketゴールデンウィーク2日目に、第22回シェル芸勉強会に参加してきたので、その復習。今回は全体的にawk力が要求されるような問題が多かったようだ。今回の問題・解答例はこちら。なんか長くなったので、復習した内容を前半と後半で分けて記述する。目次Q1.Q2.Q3.Q4.Q1.各ファイル内の中央値を求める、という問題。前にこの辺で触れた方法をそのまま持ってくればいけたので、それで対応。stコマンドが利用できるなら楽なので、入れられる環境なら入れとくとよいだろう。--median3.4なお、最初にgrepと組み合わせて一発で各ファイルごとの中央値を出せないか調べていたのだが、うまくsortされなかったので諦めた。-k1,2n./a:1./a:1./a:2./a:3./a:4./a:6./a:6./a:8./b:-4./b:-5./b:13./b:3.4./b:4242Q2.2つの単語を、伸ばし棒「ー」でタテヨコで重なるように出力する、という問題。Q2に移った際、地味にまだQ1で勘違い(一発で各ファイルの中央値を求めるのだと思ってた)して進めてたので、手を付けてなかった。いうわけで、模範解答をまんまのせる。$1==substr(a,4,1)?a:$0}'一応、それぞれを分解するとこんな感じ。文字\n」と書き換える。文字\n」と書き換える。シェル芸勉強会でよくすごい別解を出されているebanさんの解。7)だとうまくエスケープ出来なかったので、一部改変して実行。ス分解して考えたのが以下。LinksQ3.行が重複しているデータの集計。これもawkで対応していく問題だ。連想配列を用いる事で対処していく。分解しての解説も記述しておく。6で、これを元の状態に戻す場合。$1}'aaabbbbababaaaabbbaaabbbbabababbbbbaQ4.素数行のみで集計をするという問題(この勉強会、必ず素数出てくるな...)。factor(素因数分解のコマンド)を利用することで、素数か否かを判定してやると良いようだ。個人的に出した解としては、joinコマンドを使って結合することで対応した。blacknonインフラエンジニア(...のつもり)。仕事で使うならクライアントはWindowsよりはUNIXの方が好き。Commentコメントをキャンセルメールアドレスが公開されることはありません。