SlideShare a Scribd company logo
1 of 26
Download to read offline
第6回チャンピオンシップ	
  
シェル芸ランナー勉強会	
  
in	
  LLまつり	
USP友の会/産業技術大学院大学	
  
上田隆一
こんにちは	
•  本セッションは、	
  
アバンギャルドな Lightweight	
  Language	
  
「シェル(スクリプト)」	
  
のチュートリアルです。	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 2
あのWikipediaも言っている	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 3
本日はシェル芸勉強会をやります	
•  シェル芸とは?	
  
– マウスも使わず、ソースコードも残さず、	
  
GUIツールを立ち上げる間もなく、	
  
あらゆる調査・計算・テキスト処理を	
  
コマンド入力一撃で終わらす。	
  
– 格闘技で言えばコンバットサンボ	
  
•  理屈ばかり言っていると	
  
この人(右図)に殺されると思え	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 4	
h=p://www.kremlin.ru
これまでのシェル芸勉強会	
•  2012年10月(45人)	
  
–  hbstudy#38	
  シェルスクリプト(Open	
  usp	
  Tukubai)で	
  
いろいろやってみよう!	
  
•  2012年12月(25人)	
  
–  USP友の会会長presents第2回チキチキ!シェル芸人養成勉強会	
  
•  2013年2月(32人)	
  
–  第3回シェル芸爆破デスマッチ勉強会	
  
•  2013年4月(53人)	
  
–  第4回春爛漫シェル芸人撩乱勉強会	
  
•  2013年6月(35人)	
  
–  第5回シェル芸勉強会(プレーンタイプ)	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 5	
延べ(?)190人	
  
のシェル芸人を	
  
荒野に放つ!!
こういう問題を解いてます	
•  Q.	
  0〜9までの数字で欠けているものは?	
  
	
  
4	
  3	
  5	
  9	
  8	
  2	
  
•  A.	
  $	
  echo	
  4	
  3	
  5	
  9	
  8	
  2	
  |	
  tr	
  '	
  '	
  'n'	
  |	
  
cat	
  -­‐	
  <(seq	
  0	
  9)	
  |	
  sort	
  |	
  uniq	
  -­‐u	
  |	
  tr	
  'n'	
  '	
  '	
  
	
  
0	
  1	
  6	
  7	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 6
シェル芸勉強会の意義	
•  普段の仕事にCUIを役立てるためのスキル	
  
を身につけることが趣旨	
  
– ユーザとしてどうコンピュータを使い倒すか?	
  
•  料理人はひたすら包丁や鍋の評論をするか?	
  
– 料理の方が大事	
  
– 使いこなすことの方が大事	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 7
使うもの	
•  自分が普段使っているマシーン	
  
•  自分が普段使っているワンライナー環境	
  
– 他流試合大歓迎	
  
•  PerlでもRubyでもPowerShellでもOK	
  
•  解答はMacとbashで作成しました	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 8
その前に一つ宣伝	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 9	
h=p://ja.wikipedia.org/wiki/たらい舟
では始めます	
•  諸注意	
  
–  全7問	
  
–  コマンドがなかったらその場でインストール願います	
  
–  今回はLLまつりということで、かなり難易度高め	
  
•  あまり実用的でない	
  
–  どんどんツッコンでください(悪意がなければ)	
  
•  ・・・では参りましょう。	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 10
第1問 文字の選別	
•  次の文字列について、濁点の文字、半濁点
の文字、その他の文字(記号含む)の数を数
えてください	
  
「どんどこどん、ぱらぱっぱ、ぴろぴろぴー、	
  
すっとこどっこい。」	
  
(注意:特に意味はない。)	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 11
解答	
•  半角に直して濁点・半濁点を分離	
  →	
  集計	
  
– $	
  echo	
  どんどこどん、ぱらぱっぱ、ぴろぴろぴー、
すっとこどっこい。|	
  gsed	
  's/./n&/g'	
  |	
  nkf	
  -­‐h2	
  |	
  nkf	
  
-­‐Z4	
  |	
  sed	
  's/./&	
  /'	
  |	
  awk	
  'NF==2{print	
  $2}
NF==1{print	
  "_"}'	
  |	
  sort	
  |	
  uniq	
  -­‐c	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 12
第2問 横にcatする	
•  二つのファイルを横にくっつけてください	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 13
解答	
•  $	
  awk	
  '{print	
  FNR,$0}'	
  fileA	
  fileB	
  |	
  sort	
  -­‐s	
  -­‐k1,1	
  |	
  
awk	
  'NR%2==0{print	
  $2}NR%2==1{prinn	
  $2}'	
  
•  Open	
  usp	
  Tukubaiを使う	
  
–  $	
  ycat	
  file{A,B}	
  |	
  tr	
  -­‐d	
  '	
  '	
  	
  
•  会場から	
  
– $	
  paste	
  file{A,B}	
  |	
  tr	
  -­‐d	
  't'	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 14
第3問 小町算	
•  次のechoから始めて	
  
4つの数字の間に	
  +	
  -­‐	
  *	
  /	
  の符号を入れ、	
  
100になる計算式を	
  
ワンライナーで一つ作ってください	
  
•  $	
  echo	
  56	
  2	
  8	
  9	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 15
解答	
•  ランダムに数式を作って100になったら止める	
  
–  $	
  echo	
  56	
  2	
  8	
  9	
  |	
  awk	
  '{while(1){print	
  "/	
  +	
  -­‐	
  *",
$0,int(rand()*4)+1,int(rand()*4)+1,int(rand()*4)+1}}'	
  |	
  awk	
  
'{print	
  $5	
  $($9)	
  $6	
  $($10)	
  $7	
  $($11)	
  $8}'	
  |	
  perl	
  -­‐anle	
  'print	
  
$F[0],"	
  ",eval($F[0])'	
  |	
  grep	
  "	
  100$"	
  |	
  head	
  -­‐n	
  1	
  
•  律儀に式を作る	
  
–  $	
  echo	
  56	
  2	
  8	
  9	
  |	
  awk	
  
'{a[0]="+";a[1]="-­‐";a[2]="*";a[3]="/";for(i=0;i<4*4*4;i++)
{print	
  $1	
  a[int(i/16)]	
  $2	
  a[int(i/4)%4]	
  $3	
  a[i%4]	
  $4}}'	
  |	
  perl	
  -­‐
anle	
  'print	
  $F[0],"	
  ",eval($F[0])'	
  |	
  grep	
  "	
  100$"	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 16
•  perl不使用バージョン	
  
–  $	
  echo	
  56	
  2	
  8	
  9	
  |	
  awk	
  '{while(1){print	
  "+	
  -­‐	
  /	
  *",$0}}'	
  |	
  awk	
  
'{print	
  $5	
  $(rand()*4+1)	
  $6	
  $(rand()*4+1)	
  $7	
  $(rand()*4+1)	
  
$8}'	
  |	
  
while	
  read	
  ln	
  ;	
  do	
  A=$(echo	
  $ln	
  |	
  bc)	
  ;	
  echo	
  $ln	
  $A;	
  done	
  |	
  
awk	
  '$2==100{print	
  $0;exit(0)}'	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 17
第4問 ネットから拝借	
•  h=p://ja.wikipedia.org/wiki/ISO_3166-­‐1	
  
(ISO	
  3166-­‐1	
  -­‐-­‐wikipedia)のページから、	
  
	
  
アイスランド IS	
  
アイルランド IE	
  
アゼルバイジャン AZ	
  
アフガニスタン AF	
  
...	
  
	
  
のように、国名と2レターコードの対	
  
のリストを作りましょう。	
  
	
  2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 18
解答	
•  例	
  
–  $	
  curl	
  h=p://ja.wikipedia.org/wiki/ISO_3166-­‐1	
  2>	
  /dev/
null	
  |	
  awk	
  '/<table	
  class="sortable/,/</table>/'	
  |	
  grep	
  -­‐A	
  5	
  
'^<tr'	
  |	
  sed	
  's;.*>(..*)</a></td>;1;'	
  |	
  grep	
  -­‐v	
  "lang="	
  |	
  
grep	
  -­‐v	
  "t[rh]"	
  |	
  sed	
  's;</*td>;;g'	
  |	
  awk	
  '/-­‐-­‐/{print	
  ""}!/-­‐-­‐/
{prinn	
  $1	
  "	
  "}'	
  |	
  awk	
  '{print	
  $1,$4}'	
  
–  出力を確認しながら泥縄式で作ればよい	
  
–  途中でexcelなどに切り替えても特に構わないので、	
  
途中までワンライナーで整理してみる。	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 19
第5問 フィボナッチ数	
•  延々とフィボナッチ数を出力するワンライナー	
  
を記述してください。	
  
ただし桁数が増えてもなるべく正確に。	
  
– 0,1,1,2,3,5,8,13...	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 20
解答	
•  $	
  a=0;	
  b=1;	
  while	
  :	
  ;	
  do	
  c=$(echo	
  "$a+$b"	
  |	
  bc	
  
|	
  tr	
  -­‐d	
  'n')	
  ;	
  echo	
  $a	
  ;	
  a=$b	
  ;	
  b=$c	
  	
  ;	
  done	
  	
  
•  会場から	
  
– ruby	
  -­‐e	
  "a	
  =	
  [1,	
  1];	
  loop	
  {	
  puts	
  n	
  =	
  a.inject(:+);	
  
a.shiz;	
  a	
  <<	
  n;	
  }"	
  	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 21
第6問	
  50音の取得	
•  以下の出力を得てください。	
  
(echo	
  あいうえお・・・以外で)	
  
•  あいうえおかきくけこさしすせそたちつてとな
にぬねのはひふへほまみむめもやゆよらりる
れろわをん	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 22
解答	
•  例(cp932の半角カナから)	
  
– $	
  echo	
  {177..220}	
  166	
  221	
  |	
  tr	
  '	
  '	
  'n'	
  |	
  LANG=C	
  
gawk	
  '{prinn("%c",$1)}'	
  |	
  iconv	
  -­‐f	
  cp932	
  -­‐t	
  un8	
  |	
  
nkf	
  -­‐h1	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 23
第7問 ユニコード一覧作成 	
•  下のようなUnicodeとひらがな(U+3041「ぁ」〜	
  
U+3094「ゔ」)のリストを作成してください。	
  
この問題もiconvを使います。	
  
	
  
U+3041	
  ぁ	
U+3042	
  あ	
U+3043	
  ぃ	
  
...	
  
U+3092	
  を	
U+3093	
  ん	
U+3094	
  ゔ	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 24
解答	
•  $	
  seq	
  0x3041	
  0x3094	
  |	
  
LANG=C	
  gawk	
  '{prinn("%c%c%c%c",int($1/256),$1%256,0,10)}'	
  
|	
  iconv	
  -­‐f	
  UCS-­‐2BE	
  -­‐t	
  un8	
  |	
  
awk	
  -­‐v	
  a="0x3041"	
  '{prinn("U+%X	
  %sn",a++,$0)}'	
  
•  会場から	
  
–  $	
  ruby	
  -­‐e	
  "0x3041.upto(0x3094)	
  {|n|	
  puts	
  'U+%x	
  %s'	
  %	
  [n,	
  [n].pack('U')]}"	
  	
  
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 25
おわりに	
•  おつかれさまでした・・・	
  
– まだLLまつりは続きますので、死なないで下さい。	
  
•  次回はおそらく10月	
  
– お待ちしております。	
2013年8月24日	
第6回チャンピオンシップシェル芸ランナー
勉強会 in	
  LLまつり	
 26

More Related Content

What's hot

金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデルKei Nakagawa
 
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめMitsutoshi Kiuchi
 
Uplift Modelling 入門(1)
Uplift Modelling 入門(1)Uplift Modelling 入門(1)
Uplift Modelling 入門(1)Yohei Sato
 
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成(shibao)芝尾 (kouichiro)幸一郎
 
落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット森 哲也
 
第3回ナレッジグラフ推論チャレンジ2020の紹介
第3回ナレッジグラフ推論チャレンジ2020の紹介第3回ナレッジグラフ推論チャレンジ2020の紹介
第3回ナレッジグラフ推論チャレンジ2020の紹介KnowledgeGraph
 
プライバシー保護のためのサンプリング、k-匿名化、そして差分プライバシー
プライバシー保護のためのサンプリング、k-匿名化、そして差分プライバシープライバシー保護のためのサンプリング、k-匿名化、そして差分プライバシー
プライバシー保護のためのサンプリング、k-匿名化、そして差分プライバシーHiroshi Nakagawa
 
Word2vecの理論背景
Word2vecの理論背景Word2vecの理論背景
Word2vecの理論背景Masato Nakai
 
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)Nozomu Kaneko
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
数式を使わないプライバシー保護技術
数式を使わないプライバシー保護技術数式を使わないプライバシー保護技術
数式を使わないプライバシー保護技術Hiroshi Nakagawa
 
ナレッジグラフ推論チャレンジの紹介
ナレッジグラフ推論チャレンジの紹介ナレッジグラフ推論チャレンジの紹介
ナレッジグラフ推論チャレンジの紹介KnowledgeGraph
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)Kentaro Minami
 
モンテカルロサンプリング
モンテカルロサンプリングモンテカルロサンプリング
モンテカルロサンプリングKosei ABE
 
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門高速!Clojure Web 開発入門
高速!Clojure Web 開発入門Kazuki Tsutsumi
 
10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)Takanori Ogata
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説Shiga University, RIKEN
 
金融情報における時系列分析
金融情報における時系列分析金融情報における時系列分析
金融情報における時系列分析Fujio Toriumi
 
Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理wada, kazumi
 

What's hot (20)

金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル
 
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ
 
Oss貢献超入門
Oss貢献超入門Oss貢献超入門
Oss貢献超入門
 
Uplift Modelling 入門(1)
Uplift Modelling 入門(1)Uplift Modelling 入門(1)
Uplift Modelling 入門(1)
 
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
 
落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット
 
第3回ナレッジグラフ推論チャレンジ2020の紹介
第3回ナレッジグラフ推論チャレンジ2020の紹介第3回ナレッジグラフ推論チャレンジ2020の紹介
第3回ナレッジグラフ推論チャレンジ2020の紹介
 
プライバシー保護のためのサンプリング、k-匿名化、そして差分プライバシー
プライバシー保護のためのサンプリング、k-匿名化、そして差分プライバシープライバシー保護のためのサンプリング、k-匿名化、そして差分プライバシー
プライバシー保護のためのサンプリング、k-匿名化、そして差分プライバシー
 
Word2vecの理論背景
Word2vecの理論背景Word2vecの理論背景
Word2vecの理論背景
 
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
数式を使わないプライバシー保護技術
数式を使わないプライバシー保護技術数式を使わないプライバシー保護技術
数式を使わないプライバシー保護技術
 
ナレッジグラフ推論チャレンジの紹介
ナレッジグラフ推論チャレンジの紹介ナレッジグラフ推論チャレンジの紹介
ナレッジグラフ推論チャレンジの紹介
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)
 
モンテカルロサンプリング
モンテカルロサンプリングモンテカルロサンプリング
モンテカルロサンプリング
 
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
 
10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
金融情報における時系列分析
金融情報における時系列分析金融情報における時系列分析
金融情報における時系列分析
 
Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理
 

Viewers also liked

20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライドRyuichi Ueda
 
20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/SpringRyuichi Ueda
 
Uspstudy20121208qonly
Uspstudy20121208qonlyUspstudy20121208qonly
Uspstudy20121208qonlyRyuichi Ueda
 
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会Ryuichi Ueda
 
20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライドRyuichi Ueda
 
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライドRyuichi Ueda
 
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会Ryuichi Ueda
 
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)Ryuichi Ueda
 
第31回シェル芸勉強会スライド
第31回シェル芸勉強会スライド第31回シェル芸勉強会スライド
第31回シェル芸勉強会スライドRyuichi Ueda
 
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#382012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38Ryuichi Ueda
 

Viewers also liked (10)

20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド
 
20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring
 
Uspstudy20121208qonly
Uspstudy20121208qonlyUspstudy20121208qonly
Uspstudy20121208qonly
 
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会
 
20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド
 
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド
 
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
 
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
 
第31回シェル芸勉強会スライド
第31回シェル芸勉強会スライド第31回シェル芸勉強会スライド
第31回シェル芸勉強会スライド
 
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#382012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38
 

More from Ryuichi Ueda

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライドRyuichi Ueda
 
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックシェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックRyuichi Ueda
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナーRyuichi Ueda
 
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話シェル芸勉強会と会場の話
シェル芸勉強会と会場の話Ryuichi Ueda
 
移動ロボットのナビゲーション
移動ロボットのナビゲーション移動ロボットのナビゲーション
移動ロボットのナビゲーションRyuichi Ueda
 
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆Ryuichi Ueda
 
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライドRyuichi Ueda
 
bash(の変な使い方)update
bash(の変な使い方)updatebash(の変な使い方)update
bash(の変な使い方)updateRyuichi Ueda
 
第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニングRyuichi Ueda
 
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Ryuichi Ueda
 
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トークRyuichi Ueda
 
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロRyuichi Ueda
 
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習Ryuichi Ueda
 
ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018Ryuichi Ueda
 
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018Ryuichi Ueda
 
Robot frontier lesson3 2018
Robot frontier lesson3 2018Robot frontier lesson3 2018
Robot frontier lesson3 2018Ryuichi Ueda
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018Ryuichi Ueda
 
Robot frontier lesson1 2018
Robot frontier lesson1 2018Robot frontier lesson1 2018
Robot frontier lesson1 2018Ryuichi Ueda
 
第34回シェル芸勉強会
第34回シェル芸勉強会第34回シェル芸勉強会
第34回シェル芸勉強会Ryuichi Ueda
 
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」Ryuichi Ueda
 

More from Ryuichi Ueda (20)

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド
 
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックシェル・ワンライナー160本ノック
シェル・ワンライナー160本ノック
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー
 
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話シェル芸勉強会と会場の話
シェル芸勉強会と会場の話
 
移動ロボットのナビゲーション
移動ロボットのナビゲーション移動ロボットのナビゲーション
移動ロボットのナビゲーション
 
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
 
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド
 
bash(の変な使い方)update
bash(の変な使い方)updatebash(の変な使い方)update
bash(の変な使い方)update
 
第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング
 
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
 
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク
 
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ
 
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習
 
ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018
 
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018
 
Robot frontier lesson3 2018
Robot frontier lesson3 2018Robot frontier lesson3 2018
Robot frontier lesson3 2018
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018
 
Robot frontier lesson1 2018
Robot frontier lesson1 2018Robot frontier lesson1 2018
Robot frontier lesson1 2018
 
第34回シェル芸勉強会
第34回シェル芸勉強会第34回シェル芸勉強会
第34回シェル芸勉強会
 
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
 

Recently uploaded

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 

Recently uploaded (10)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり

  • 1. 第6回チャンピオンシップ   シェル芸ランナー勉強会   in  LLまつり USP友の会/産業技術大学院大学   上田隆一
  • 2. こんにちは •  本セッションは、   アバンギャルドな Lightweight  Language   「シェル(スクリプト)」   のチュートリアルです。 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 2
  • 4. 本日はシェル芸勉強会をやります •  シェル芸とは?   – マウスも使わず、ソースコードも残さず、   GUIツールを立ち上げる間もなく、   あらゆる調査・計算・テキスト処理を   コマンド入力一撃で終わらす。   – 格闘技で言えばコンバットサンボ   •  理屈ばかり言っていると   この人(右図)に殺されると思え 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 4 h=p://www.kremlin.ru
  • 5. これまでのシェル芸勉強会 •  2012年10月(45人)   –  hbstudy#38  シェルスクリプト(Open  usp  Tukubai)で   いろいろやってみよう!   •  2012年12月(25人)   –  USP友の会会長presents第2回チキチキ!シェル芸人養成勉強会   •  2013年2月(32人)   –  第3回シェル芸爆破デスマッチ勉強会   •  2013年4月(53人)   –  第4回春爛漫シェル芸人撩乱勉強会   •  2013年6月(35人)   –  第5回シェル芸勉強会(プレーンタイプ)   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 5 延べ(?)190人   のシェル芸人を   荒野に放つ!!
  • 6. こういう問題を解いてます •  Q.  0〜9までの数字で欠けているものは?     4  3  5  9  8  2   •  A.  $  echo  4  3  5  9  8  2  |  tr  '  '  'n'  |   cat  -­‐  <(seq  0  9)  |  sort  |  uniq  -­‐u  |  tr  'n'  '  '     0  1  6  7   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 6
  • 7. シェル芸勉強会の意義 •  普段の仕事にCUIを役立てるためのスキル   を身につけることが趣旨   – ユーザとしてどうコンピュータを使い倒すか?   •  料理人はひたすら包丁や鍋の評論をするか?   – 料理の方が大事   – 使いこなすことの方が大事   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 7
  • 8. 使うもの •  自分が普段使っているマシーン   •  自分が普段使っているワンライナー環境   – 他流試合大歓迎   •  PerlでもRubyでもPowerShellでもOK   •  解答はMacとbashで作成しました 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 8
  • 10. では始めます •  諸注意   –  全7問   –  コマンドがなかったらその場でインストール願います   –  今回はLLまつりということで、かなり難易度高め   •  あまり実用的でない   –  どんどんツッコンでください(悪意がなければ)   •  ・・・では参りましょう。 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 10
  • 11. 第1問 文字の選別 •  次の文字列について、濁点の文字、半濁点 の文字、その他の文字(記号含む)の数を数 えてください   「どんどこどん、ぱらぱっぱ、ぴろぴろぴー、   すっとこどっこい。」   (注意:特に意味はない。) 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 11
  • 12. 解答 •  半角に直して濁点・半濁点を分離  →  集計   – $  echo  どんどこどん、ぱらぱっぱ、ぴろぴろぴー、 すっとこどっこい。|  gsed  's/./n&/g'  |  nkf  -­‐h2  |  nkf   -­‐Z4  |  sed  's/./&  /'  |  awk  'NF==2{print  $2} NF==1{print  "_"}'  |  sort  |  uniq  -­‐c 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 12
  • 13. 第2問 横にcatする •  二つのファイルを横にくっつけてください   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 13
  • 14. 解答 •  $  awk  '{print  FNR,$0}'  fileA  fileB  |  sort  -­‐s  -­‐k1,1  |   awk  'NR%2==0{print  $2}NR%2==1{prinn  $2}'   •  Open  usp  Tukubaiを使う   –  $  ycat  file{A,B}  |  tr  -­‐d  '  '     •  会場から   – $  paste  file{A,B}  |  tr  -­‐d  't'   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 14
  • 15. 第3問 小町算 •  次のechoから始めて   4つの数字の間に  +  -­‐  *  /  の符号を入れ、   100になる計算式を   ワンライナーで一つ作ってください   •  $  echo  56  2  8  9 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 15
  • 16. 解答 •  ランダムに数式を作って100になったら止める   –  $  echo  56  2  8  9  |  awk  '{while(1){print  "/  +  -­‐  *", $0,int(rand()*4)+1,int(rand()*4)+1,int(rand()*4)+1}}'  |  awk   '{print  $5  $($9)  $6  $($10)  $7  $($11)  $8}'  |  perl  -­‐anle  'print   $F[0],"  ",eval($F[0])'  |  grep  "  100$"  |  head  -­‐n  1   •  律儀に式を作る   –  $  echo  56  2  8  9  |  awk   '{a[0]="+";a[1]="-­‐";a[2]="*";a[3]="/";for(i=0;i<4*4*4;i++) {print  $1  a[int(i/16)]  $2  a[int(i/4)%4]  $3  a[i%4]  $4}}'  |  perl  -­‐ anle  'print  $F[0],"  ",eval($F[0])'  |  grep  "  100$"   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 16
  • 17. •  perl不使用バージョン   –  $  echo  56  2  8  9  |  awk  '{while(1){print  "+  -­‐  /  *",$0}}'  |  awk   '{print  $5  $(rand()*4+1)  $6  $(rand()*4+1)  $7  $(rand()*4+1)   $8}'  |   while  read  ln  ;  do  A=$(echo  $ln  |  bc)  ;  echo  $ln  $A;  done  |   awk  '$2==100{print  $0;exit(0)}' 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 17
  • 18. 第4問 ネットから拝借 •  h=p://ja.wikipedia.org/wiki/ISO_3166-­‐1   (ISO  3166-­‐1  -­‐-­‐wikipedia)のページから、     アイスランド IS   アイルランド IE   アゼルバイジャン AZ   アフガニスタン AF   ...     のように、国名と2レターコードの対   のリストを作りましょう。    2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 18
  • 19. 解答 •  例   –  $  curl  h=p://ja.wikipedia.org/wiki/ISO_3166-­‐1  2>  /dev/ null  |  awk  '/<table  class="sortable/,/</table>/'  |  grep  -­‐A  5   '^<tr'  |  sed  's;.*>(..*)</a></td>;1;'  |  grep  -­‐v  "lang="  |   grep  -­‐v  "t[rh]"  |  sed  's;</*td>;;g'  |  awk  '/-­‐-­‐/{print  ""}!/-­‐-­‐/ {prinn  $1  "  "}'  |  awk  '{print  $1,$4}'   –  出力を確認しながら泥縄式で作ればよい   –  途中でexcelなどに切り替えても特に構わないので、   途中までワンライナーで整理してみる。   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 19
  • 20. 第5問 フィボナッチ数 •  延々とフィボナッチ数を出力するワンライナー   を記述してください。   ただし桁数が増えてもなるべく正確に。   – 0,1,1,2,3,5,8,13...   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 20
  • 21. 解答 •  $  a=0;  b=1;  while  :  ;  do  c=$(echo  "$a+$b"  |  bc   |  tr  -­‐d  'n')  ;  echo  $a  ;  a=$b  ;  b=$c    ;  done     •  会場から   – ruby  -­‐e  "a  =  [1,  1];  loop  {  puts  n  =  a.inject(:+);   a.shiz;  a  <<  n;  }"     2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 21
  • 22. 第6問  50音の取得 •  以下の出力を得てください。   (echo  あいうえお・・・以外で)   •  あいうえおかきくけこさしすせそたちつてとな にぬねのはひふへほまみむめもやゆよらりる れろわをん   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 22
  • 23. 解答 •  例(cp932の半角カナから)   – $  echo  {177..220}  166  221  |  tr  '  '  'n'  |  LANG=C   gawk  '{prinn("%c",$1)}'  |  iconv  -­‐f  cp932  -­‐t  un8  |   nkf  -­‐h1   2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 23
  • 24. 第7問 ユニコード一覧作成 •  下のようなUnicodeとひらがな(U+3041「ぁ」〜   U+3094「ゔ」)のリストを作成してください。   この問題もiconvを使います。     U+3041  ぁ U+3042  あ U+3043  ぃ   ...   U+3092  を U+3093  ん U+3094  ゔ 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 24
  • 25. 解答 •  $  seq  0x3041  0x3094  |   LANG=C  gawk  '{prinn("%c%c%c%c",int($1/256),$1%256,0,10)}'   |  iconv  -­‐f  UCS-­‐2BE  -­‐t  un8  |   awk  -­‐v  a="0x3041"  '{prinn("U+%X  %sn",a++,$0)}'   •  会場から   –  $  ruby  -­‐e  "0x3041.upto(0x3094)  {|n|  puts  'U+%x  %s'  %  [n,  [n].pack('U')]}"     2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 25
  • 26. おわりに •  おつかれさまでした・・・   – まだLLまつりは続きますので、死なないで下さい。   •  次回はおそらく10月   – お待ちしております。 2013年8月24日 第6回チャンピオンシップシェル芸ランナー 勉強会 in  LLまつり 26