第27回シェル芸勉強会に参加してきました

Pocket

どうも。

現地参加は4回目でした。

そして初めてシェル芸勉強会にリモート参加してから1年経過しました。

1年前はawkの存在すら知らなかったくらいでしたが、多少成長できたと思います。

それでは今回の感想と私の解答を書いていきます。

 

今回はひたすらsedでしたね。

難解でこれまでちゃんと覚えることができていなかったホールドスペースとラベルがなんとなく理解できましたね。

sedってなんでもできちゃうんですね。

これまで置換に使うもんだとしか思っていなかったので恐れ入りました。

 

話は変わりまして、今回初めて勉強会終了後の懇親会に参加してきました。

軽い自己紹介で「みどりごけ」を名乗ったら「あー」や「おー」という声が聞こえてきました。

私ってそんな反応されるような人でしたっけ?

もし次回も参加できた場合はLTやります。

何かしらネタを考えておきます。

 

今回出題された問題の詳細は【問題と解答】第27回sedこわいシェル芸勉強会を御覧ください。

Q1

echo abcdefghijklmn | grep -o . | awk 'NR%2-1{print toupper($1);next}1' | tr -d '\n'

sedの\Uと\Lなんて知らんかった・・・。

Q2

seq 100 | sed '3~3cFizz' | sed '5~5cBuzz' | sed '15~15cFizzBuzz'

ベーシックな方法。

sedのcコマンドは以前から知ってましたね。

Q3

seq 10 | sed -n '3h;3d;p;7g;7p'

頭の片隅にあったホールドスペースとかいうものを適当にゴニョゴニョしてみたらうまいこと動いた。

なおnオプションを外したらpと7pが不要になるので短くできるみたいです。

Q4

cat aho.cc | sed '/main/,/\}/{H;d};$G'

ホールドスペースの使い方をなんとなく理解したお陰で解けるように。

Q5

seq 10 | sed '1~2{h;d};2~2{p;x;}'

適当にコマンドを変えたり位置を変えたりした結果偶然うまいこと動いた。

Q6

echo 1 | sed 's/^/a=\;:(){ a=${a}/;s/$/\;echo -e $a\;:\;};:|head/' | bash

正攻法がわからなかった。

だからfork bombみたいな再帰関数で。

Q7

seq 10 | sed -n -e wa -e 's/^/cp a a/;e'

これを試す段階でファイルを大量に生成してしまい後で腰抜かした。

Q8

解けませんでした。

上田先生曰く、「1!G;h;$!d」は慣用句らしいので覚えておきます。

 

前回に比べ結構調子良かったです。

予定さえ合えばまた行きますんで。

それでは、お疲れ様でした。

The following two tabs change content below.
みどりごけ

みどりごけ

スペシャルエグゼクティブアドバイザーほしい物リスト
どこぞのシェル芸大好き鯖管(自称ではない) / 基本情報技術者 / Linux (LPIC2保有) / C# / PHP / JavaScript / 食べ鉄 / Minecraft / ETS2 / GTAV / Ingress
みどりごけ

最新記事 by みどりごけ (全て見る)

コメントを残す