2017/12/23(土)に岡山で行われた「合同勉強会 in 大都会岡山 -2017 Winter-」にて、県外ゲスト枠としてシェル芸のセッション(20分)をしてきました。

合同勉強会 in 大都会岡山 -2017 Winter- (2017/12/23 10:00〜)

合同勉強会 in 大都会岡山 - 2017 Winter - #gbdaitokai & 忘年会議2017 #忘年会議 まとめ

www.slideshare.net

セッションの様子

今回は岡山の合同勉強会ということもあり、シェル芸人らしき人がまったくいない中のセッションとなりました。

冒頭でアンケートを取ったのですが、参加者約80名のうち「シェル芸」という単語を知っている人がそもそも1/3程度という状況…… が! 解けてる方も数名いらっしゃって、岡山のパワーを感じました。

出題中はみなさん非常に集中されてる様子で、真剣さが伝わってきてました。

開始前は無茶苦茶緊張していたのですが、無事に盛り上がっていただけて安心しました。ありがとうございました!

問題と解答例

スライドにも書いてありますが、ブログの方にも書き写しておきます。よろしければ練習にお使い下さい。

問1: シェル上で計算

問題

次の数字の列を、足し算してください。

1
2
3
$ echo 2 5 9 8 1 3 7 4
2 5 9 8 1 3 7 4

解答例

1
2
$ echo 2 5 9 8 1 3 7 4 | tr ' ' '+' | bc

1
2
$ echo 2 5 9 8 1 3 7 4 | awk '{for(i=1;i<=NF;i++){a+=$i}}END{print a}'

1
2
$ echo 2 5 9 8 1 3 7 4 | tr ' ' '\n' | awk '{a+=$1}END{print a}'

問2: 文字列の変換

問題

「pen-pineapple-apple-pen」を「PenPineappleApplePen」に変換して下さい。

1
2
3
$ echo pen-pineapple-apple-pen
pen-pineapple-apple-pen

解答例

1
2
$ echo pen-pineapple-apple-pen | sed -r 's/(^|-)(.)/\U\2/g'

1
2
$ echo pen-pineapple-apple-pen | tr '-' '\n' | while read L; do echo -n ${L^}; done; echo

問3: 「大都会岡山へようこそ」問題

問題

1
2
$ echo 大都会岡山へようこそ

から、以下のような出力を生成してください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
大都会岡山へようこそ
都会岡山へようこそ大
会岡山へようこそ大都
岡山へようこそ大都会
山へようこそ大都会岡
へようこそ大都会岡山
ようこそ大都会岡山へ
うこそ大都会岡山へよ
こそ大都会岡山へよう
そ大都会岡山へようこ

解答例

1
2
$ echo 大都会岡山へようこそ | sed 's/.*/&&&&&&&&&&&/g' | sed -r 's/(.{10})./\1\n/g'

1
2
$ echo 大都会岡山へようこそ | sed -r ':a;p;s/(.)(.*)/\2\1/;/^そ/!ba'

1
2
$ echo 大都会岡山へようこそ | perl -nle 'print "$_$_\n"x10' | awk '$0=substr($0,NR,10)'

まとめ

  • 岡山の方へ
    • シェル芸勉強会はフルリモートで参加できますので、ぜひ気軽に参加してみてください。
    • 初参加なのにもかかわらず1問でも解けるのは凄いので自慢しまくってください!
  • ハンズオン形式や、Twitterを活用して双方向になるような感じは、やはり新鮮さがあるようです。他の勉強会でもそういうのが増えてくると楽しいかもですねっ!

えっ!? ちょっ!? まじすか……