2017/12/23(土)に岡山で行われた「合同勉強会 in 大都会岡山 -2017 Winter-」にて、県外ゲスト枠としてシェル芸のセッション(20分)をしてきました。
www.slideshare.net
セッションの様子
今回は岡山の合同勉強会ということもあり、シェル芸人らしき人がまったくいない中のセッションとなりました。
大都会にもある #シェル芸 勉強会#gbdaitokai pic.twitter.com/zOomuYuE73
— 法林浩之 (@hourin) 2017年12月23日
冒頭でアンケートを取ったのですが、参加者約80名のうち「シェル芸」という単語を知っている人がそもそも1/3程度という状況…… が! 解けてる方も数名いらっしゃって、岡山のパワーを感じました。
出題中はみなさん非常に集中されてる様子で、真剣さが伝わってきてました。
静まり返った空間で打鍵音だけが響いている #gbdaitokai
— ほぼろ (@rhoboro) 2017年12月23日
開始前は無茶苦茶緊張していたのですが、無事に盛り上がっていただけて安心しました。ありがとうございました!
問題と解答例
スライドにも書いてありますが、ブログの方にも書き写しておきます。よろしければ練習にお使い下さい。
問1: シェル上で計算
問題
次の数字の列を、足し算してください。
$ echo 2 5 9 8 1 3 7 4 2 5 9 8 1 3 7 4
解答例
$ echo 2 5 9 8 1 3 7 4 | tr ' ' '+' | bc
$ echo 2 5 9 8 1 3 7 4 | awk '{for(i=1;i<=NF;i++){a+=$i}}END{print a}'
$ echo 2 5 9 8 1 3 7 4 | tr ' ' '\n' | awk '{a+=$1}END{print a}'
問2: 文字列の変換
問題
「pen-pineapple-apple-pen」を「PenPineappleApplePen」に変換して下さい。
$ echo pen-pineapple-apple-pen pen-pineapple-apple-pen
解答例
$ echo pen-pineapple-apple-pen | sed -r 's/(^|-)(.)/\U\2/g'
$ echo pen-pineapple-apple-pen | tr '-' '\n' | while read L; do echo -n ${L^}; done; echo
問3: 「大都会岡山へようこそ」問題
問題
$ echo 大都会岡山へようこそ
から、以下のような出力を生成してください。
大都会岡山へようこそ 都会岡山へようこそ大 会岡山へようこそ大都 岡山へようこそ大都会 山へようこそ大都会岡 へようこそ大都会岡山 ようこそ大都会岡山へ うこそ大都会岡山へよ こそ大都会岡山へよう そ大都会岡山へようこ
解答例
$ echo 大都会岡山へようこそ | sed 's/.*/&&&&&&&&&&&/g' | sed -r 's/(.{10})./\1\n/g'
$ echo 大都会岡山へようこそ | sed -r ':a;p;s/(.)(.*)/\2\1/;/^そ/!ba'
$ echo 大都会岡山へようこそ | perl -nle 'print "$_$_\n"x10' | awk '$0=substr($0,NR,10)'
まとめ
- 岡山の方へ
- シェル芸勉強会はフルリモートで参加できますので、ぜひ気軽に参加してみてください。
- 初参加なのにもかかわらず1問でも解けるのは凄いので自慢しまくってください!
- ハンズオン形式や、Twitterを活用して双方向になるような感じは、やはり新鮮さがあるようです。他の勉強会でもそういうのが増えてくると楽しいかもですねっ!
80人以上参加してるから、たぶん #シェル芸 勉強会史上最大規模w #gbdaitokai https://t.co/fY3QgiG8eU
— 法林浩之 (@hourin) 2017年12月23日
えっ!? ちょっ!? まじすか……