O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

20130223 OSC Tokyo/Spring

13.495 visualizações

Publicada em

オープンソースカンファレンス 2013 Tokyo/Spring での講演。研究所名義だけどほとんど友の会の内容。ビジネス版コマンドを少し使用。

Publicada em: Tecnologia
  • Seja o primeiro a comentar

20130223 OSC Tokyo/Spring

  1. 1. 覚えて楽するシェル一行野郎10選!   魅せます☆華麗なシェル芸! USP研究所 上田隆一
  2. 2. シェル芸とは? •  「マウスも使わず、ソースコードも残さず、   GUIツールを立ち上げる間もなく、   あらゆる調査・計算・テキスト処理を   コマンド入力一撃で終わらす。」こと   –  昨年10月のHbstudy#38で初めて使った言葉   –  現在は  Windows  PowerShell  まで飛び火   •  密かなブームか? 2013/02/23 OSC  2013  Tokyo/Spring 2
  3. 3. シェル芸勉強会 •  3時間で10問、ワンライナーの問題を解く  •  例題:     –  文字数を数えてください。   –  答え:   •  $  cat  aiueo  |  tr  -­‐d  n  |  wc  –m  など多数  2013/02/23 OSC  2013  Tokyo/Spring 3
  4. 4. 「シェル芸」の狙い •  USP研究所のやっていることを理解してもらう   –  端末叩いたことの無い人には全く理解されない    •  バイアスの是正   –  いまさら「シェルが便利」などと言うエバンジェリストはいない   –  とても便利なのだが、普通は興味の範囲内にならない   •  若い人は使ってない。   •  知らない人を見ていると、  1  +  1  を計算するのに   群論を持ち出しているように見える。  2013/02/23 OSC  2013  Tokyo/Spring 4
  5. 5. 「シェル芸」の狙い(続き) •  スキルトランスファー   –  「シェル芸勉強会」参加者   •  講師   –  問題と解答を作る(解答はだいたい不完全で、別解が存在)   •  玄人   –  経験・うんちく多し、マニアックで便利なオプションを知っている、 勉強会荒らし。ただしパズルを出すと解けないことが多い •  玄人ではない人 玄人 v.s.  講師の(平和な)突っ込み合戦を聴き、   全員が勉強する。 2013/02/23 OSC  2013  Tokyo/Spring 5
  6. 6. これまで •  2012/10/27   –  シェルスクリプトでいろいろやってみよう(Hbstudy#38  )  •  2012/12/8   –  第二回チキチキ シェル芸人養成勉強会  •  2013/2/16   –  第三回シェル芸爆破デスマッチ   –  sed  の問題を中心に  •  これからも需要がある限り2ヶ月に1回開催予定   –  4/13(土)予定  2013/02/23 OSC  2013  Tokyo/Spring 6
  7. 7. 今日の内容 •  個人的に面白い/役に立つシェル芸10個を紹介  •  せっかくUSP研究所名義で発表するので、   いくつかはビジネス版で拡張シェル芸をお魅せします。   (大風呂敷)  2013/02/23 OSC  2013  Tokyo/Spring 7
  8. 8. 1.  FizzBuzz(準備運動) •  こういう出力を得る   –  1,2,Fizz,4,Buzz,Fizz,7,8,Buzz,Buzz,11,Fizz, 13,14,FizzBuzz,16,…  •  短く書くこと。    2013/02/23 OSC  2013  Tokyo/Spring 8
  9. 9. 解答 •  $  seq  1  16  |  awk  $1%3==0{prin]  "Fizz"}$1%5==0{prin]   "Buzz"}{print  "  ",$1}  |  awk  {print  $1}  |  tr  n  , 2013/02/23 OSC  2013  Tokyo/Spring 9
  10. 10. 2.  数を数える •  テキストファイル(原稿)から   「Ubuntu」の文字を数える  2013/02/23 OSC  2013  Tokyo/Spring 10
  11. 11. 解答 •  $  grep  Ubuntu  *.rst  |  sed  s/:.*//  |  sort  |  uniq  -­‐c 2013/02/23 OSC  2013  Tokyo/Spring 11
  12. 12. 3.  データ抽出 •  キー  a,  b  それぞれについて、一番大きい数字 を取り出してください。 2013/02/23 OSC  2013  Tokyo/Spring 12
  13. 13. 解答 •  $  cat  hoge  |  sort  -­‐k1,1  -­‐k2,2nr  |  uniq  -­‐w  1   (Mac  等だと guniq  を使う) 2013/02/23 OSC  2013  Tokyo/Spring 13
  14. 14. 4.    日付の計算 •  1978年2月16日は、   2013年2月23日の何日前でしょう? 2013/02/23 OSC  2013  Tokyo/Spring 14
  15. 15. 解答 •  Mac   –  $  echo  $(gdate  +%s  -­‐d  20130223)  $(gdate  +%s  -­‐d   19780216)  |  awk  {print  $1-­‐$2}  |  awk  {print  $1/ (24*60*60)}   (gdate  インストールのこと)  •  Linux等   –  echo  19780216  20130223  |  tr      ¥n  |  date  +%s  –f   -­‐  |  tr  ¥n      |  awk  {print  $1-­‐$2}  |  awk  {print  $1/ (24*60*60)} 2013/02/23 OSC  2013  Tokyo/Spring 15
  16. 16. 5.  リストにないものを探す •  1から10までの数字のうち、numにないものは? 2013/02/23 OSC  2013  Tokyo/Spring 16
  17. 17. 解答 •  $  seq  1  10  |  cat  -­‐  num  |  sort  |  uniq  –u  •  $  sort  num  <(seq  1  10)  |  uniq  -­‐u 2013/02/23 OSC  2013  Tokyo/Spring 17
  18. 18. 6.  エクセルの読み書き •  ビジネス版   –  読み   •  $  rexcelx  1  book.xlsx     –  書き   •  $  echo  {1..10}  |  wexcelx  ./book.xlsx  1  A7  -­‐  >  out.xlsx  2013/02/23 OSC  2013  Tokyo/Spring 18
  19. 19. 7.  速いソート   •  1億行のデータのソート  2013/02/23 OSC  2013  Tokyo/Spring 19
  20. 20. 解答(というよりベンチマーク) 2013/02/23 OSC  2013  Tokyo/Spring 20
  21. 21. 8.  ソートして集計 2013/02/23 OSC  2013  Tokyo/Spring 21
  22. 22. 9.  足し算する(精度よく) •  答え:212702.890832364364363 2013/02/23 OSC  2013  Tokyo/Spring 22
  23. 23. 解答 •  $  cat  num  |  sed  s/$/  +  /  |  tr  -­‐d  n  |  awk   {print}  |  sed  s/+  -­‐/+  /g  |  sed  s/+  $//  |  bc  •  $  sm2  0  0  1  1  num 2013/02/23 OSC  2013  Tokyo/Spring 23
  24. 24. 10.  横に並んだ数字のソート •  各行について、数字を小さい方から横に並べる。 2013/02/23 OSC  2013  Tokyo/Spring 24
  25. 25. 解答 •  $  cat  file  |  cat  -­‐n  |  awk  {for(i=2;i<=NF;i++)   {print  $1,$i}}  |  sort  -­‐k1,1n  -­‐k2,2n  |     awk  {if($1!=a){a=$1;prin]  "n"};print  $2}  |  tr  n      |   tr  n  n  |  awk  NF!=0  •  $  cat  file  |  juni  |  tarr  num=1  |  sort  -­‐k1,1n  -­‐k2,2n  |   yarr  num=1  |  delf  1  2013/02/23 OSC  2013  Tokyo/Spring 25
  26. 26. まとめ •  端末は(シェル芸で修行すれば)便利  •  4/13(予定)遊びに来てください 2013/02/23 OSC  2013  Tokyo/Spring 26

×