SlideShare a Scribd company logo
覚えて楽するシェル一行野郎10選!	
  
 魅せます☆華麗なシェル芸!	
     USP研究所 上田隆一
シェル芸とは?	
•  「マウスも使わず、ソースコードも残さず、	
  
   GUIツールを立ち上げる間もなく、	
  
   あらゆる調査・計算・テキスト処理を	
  
   コマンド入力一撃で終わらす。」こと	
  

      –  昨年10月のHbstudy#38で初めて使った言葉	
  
      –  現在は	
  Windows	
  PowerShell	
  まで飛び火	
  
               •  密かなブームか?	


2013/02/23	
              OSC	
  2013	
  Tokyo/Spring	
   2
シェル芸勉強会	
•  3時間で10問、ワンライナーの問題を解く	
  
•  例題:	
  	
  
      –  文字数を数えてください。	
  




      –  答え:	
  
               •  $	
  cat	
  aiueo	
  |	
  tr	
  -­‐d	
  'n'	
  |	
  wc	
  –m	
  など多数	
  
2013/02/23	
                                     OSC	
  2013	
  Tokyo/Spring	
                3
「シェル芸」の狙い	
•  USP研究所のやっていることを理解してもらう	
  
    –  端末叩いたことの無い人には全く理解されない	
  
    	
  
•  バイアスの是正	
  
    –  いまさら「シェルが便利」などと言うエバンジェリストはいない	
  
    –  とても便利なのだが、普通は興味の範囲内にならない	
  
           •  若い人は使ってない。	
  
           •  知らない人を見ていると、	
  1	
  +	
  1	
  を計算するのに	
  
              群論を持ち出しているように見える。	
  




2013/02/23	
                    OSC	
  2013	
  Tokyo/Spring	
   4
「シェル芸」の狙い(続き)	
•  スキルトランスファー	
  
    –  「シェル芸勉強会」参加者	
  
           •  講師	
  
               –  問題と解答を作る(解答はだいたい不完全で、別解が存在)	
  
           •  玄人	
  
               –  経験・うんちく多し、マニアックで便利なオプションを知っている、
                  勉強会荒らし。ただしパズルを出すと解けないことが多い	
           •  玄人ではない人	

       玄人 v.s.	
  講師の(平和な)突っ込み合戦を聴き、	
  
       全員が勉強する。	
2013/02/23	
              OSC	
  2013	
  Tokyo/Spring	
   5
これまで	
•  2012/10/27	
  
      –  シェルスクリプトでいろいろやってみよう(Hbstudy#38	
  )	
  
•  2012/12/8	
  
      –  第二回チキチキ シェル芸人養成勉強会	
  
•  2013/2/16	
  
      –  第三回シェル芸爆破デスマッチ	
  
      –  sed	
  の問題を中心に	
  


•  これからも需要がある限り2ヶ月に1回開催予定	
  
      –  4/13(土)予定	
  

2013/02/23	
             OSC	
  2013	
  Tokyo/Spring	
   6
今日の内容	
•  個人的に面白い/役に立つシェル芸10個を紹介	
  

•  せっかくUSP研究所名義で発表するので、	
  
   いくつかはビジネス版で拡張シェル芸をお魅せします。	
  
    (大風呂敷)	
  




2013/02/23	
      OSC	
  2013	
  Tokyo/Spring	
   7
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
解答	
•  $	
  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
2.	
  数を数える	
•  テキストファイル(原稿)から	
  
   「Ubuntu」の文字を数える	
  




2013/02/23	
      OSC	
  2013	
  Tokyo/Spring	
   10
解答	
•  $	
  grep	
  Ubuntu	
  *.rst	
  |	
  sed	
  's/:.*//'	
  |	
  sort	
  |	
  uniq	
  -­‐c	




2013/02/23	
                            OSC	
  2013	
  Tokyo/Spring	
                          11
3.	
  データ抽出	
•  キー	
  a,	
  b	
  それぞれについて、一番大きい数字
   を取り出してください。	




2013/02/23	
      OSC	
  2013	
  Tokyo/Spring	
   12
解答	
•  $	
  cat	
  hoge	
  |	
  sort	
  -­‐k1,1	
  -­‐k2,2nr	
  |	
  uniq	
  -­‐w	
  1	
  
   (Mac	
  等だと guniq	
  を使う)	




2013/02/23	
                           OSC	
  2013	
  Tokyo/Spring	
                     13
4.	
  	
  日付の計算	
•  1978年2月16日は、	
  
   2013年2月23日の何日前でしょう?	




2013/02/23	
       OSC	
  2013	
  Tokyo/Spring	
   14
解答	
•  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
5.	
  リストにないものを探す	
•  1から10までの数字のうち、numにないものは?	




2013/02/23	
         OSC	
  2013	
  Tokyo/Spring	
   16
解答	
•  $	
  seq	
  1	
  10	
  |	
  cat	
  -­‐	
  num	
  |	
  sort	
  |	
  uniq	
  –u	
  
•  $	
  sort	
  num	
  <(seq	
  1	
  10)	
  |	
  uniq	
  -­‐u	




2013/02/23	
                             OSC	
  2013	
  Tokyo/Spring	
                 17
6.	
  エクセルの読み書き	
•  ビジネス版	
  
      –  読み	
  
               •  $	
  rexcelx	
  1	
  book.xlsx	
  	
  
      –  書き	
  
               •  $	
  echo	
  {1..10}	
  |	
  wexcelx	
  ./book.xlsx	
  1	
  A7	
  -­‐	
  >	
  out.xlsx	
  




2013/02/23	
                                    OSC	
  2013	
  Tokyo/Spring	
                                  18
7.	
  速いソート	
  	
•  1億行のデータのソート	
  




2013/02/23	
      OSC	
  2013	
  Tokyo/Spring	
   19
解答(というよりベンチマーク)	




2013/02/23	
        OSC	
  2013	
  Tokyo/Spring	
   20
8.	
  ソートして集計	




2013/02/23	
       OSC	
  2013	
  Tokyo/Spring	
   21
9.	
  足し算する(精度よく)	




•  答え:212702.890832364364363	



2013/02/23	
         OSC	
  2013	
  Tokyo/Spring	
   22
解答	
•  $	
  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
10.	
  横に並んだ数字のソート	
•  各行について、数字を小さい方から横に並べる。	




2013/02/23	
      OSC	
  2013	
  Tokyo/Spring	
   24
解答	
•  $	
  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
まとめ	
•  端末は(シェル芸で修行すれば)便利	
  
•  4/13(予定)遊びに来てください	




2013/02/23	
   OSC	
  2013	
  Tokyo/Spring	
   26

More Related Content

PDF
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
Ryuichi Ueda
 
PDF
20131222 第8回シェル芸勉強会スライド
Ryuichi Ueda
 
PDF
20130216 シェル芸爆破デスマッチ勉強会
Ryuichi Ueda
 
PDF
2012年10月27日 Hbstudy#38
Ryuichi Ueda
 
PDF
20130622第5回シェル芸勉強会スライド
Ryuichi Ueda
 
PDF
20130413シェル芸勉強会スライド
Ryuichi Ueda
 
PDF
20131102 第7回シェル芸勉強会
Ryuichi Ueda
 
PDF
Uspstudy20121208qonly
Ryuichi Ueda
 
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
Ryuichi Ueda
 
20131222 第8回シェル芸勉強会スライド
Ryuichi Ueda
 
20130216 シェル芸爆破デスマッチ勉強会
Ryuichi Ueda
 
2012年10月27日 Hbstudy#38
Ryuichi Ueda
 
20130622第5回シェル芸勉強会スライド
Ryuichi Ueda
 
20130413シェル芸勉強会スライド
Ryuichi Ueda
 
20131102 第7回シェル芸勉強会
Ryuichi Ueda
 
Uspstudy20121208qonly
Ryuichi Ueda
 

Similar to 20130223 OSC Tokyo/Spring (20)

PDF
awk v.s. bashどっちが強い?@OSC2011Tokyo
Ryuichi Ueda
 
PDF
Uspstudy20121208
Ryuichi Ueda
 
PDF
OSC2012 Tokyo Spring, USP lab. presentation
Ryuichi Ueda
 
PPTX
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
博文 斉藤
 
PPTX
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
博文 斉藤
 
PDF
シェル芸初心者によるシェル芸入門 (修正版)
icchy
 
PDF
Linux女子部第二回勉強会usp友の会
Ryuichi Ueda
 
PDF
シェル芸初心者によるシェル芸入門
icchy
 
PDF
20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
Ryuichi Ueda
 
PDF
「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online
Hisatoshi Onishi
 
PDF
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
Ryuichi Ueda
 
PPTX
USP 友の会 LT 資料 20130413
博文 斉藤
 
PDF
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
 
PPTX
Windowsでも使えるシェル
Tetsuya Hasegawa
 
PPTX
20150201 シェル芸勉強会LT GlueLangについて (シェル書いてますが何か?)
Ryuichi Ueda
 
PDF
10分で分かるr言語入門ver2.2 13 0223
Nobuaki Oshiro
 
PDF
USP友の会第五回シェル芸勉強会問題だけスライド
Ryuichi Ueda
 
PDF
20131222 第八回シェル芸勉強会問題集
Ryuichi Ueda
 
PPTX
第41回シェル芸勉強会 午後オープニング
Ryuichi Ueda
 
PDF
20130216 シェル芸爆破デスマッチ勉強会 問題集
Ryuichi Ueda
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
Ryuichi Ueda
 
Uspstudy20121208
Ryuichi Ueda
 
OSC2012 Tokyo Spring, USP lab. presentation
Ryuichi Ueda
 
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
博文 斉藤
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
博文 斉藤
 
シェル芸初心者によるシェル芸入門 (修正版)
icchy
 
Linux女子部第二回勉強会usp友の会
Ryuichi Ueda
 
シェル芸初心者によるシェル芸入門
icchy
 
20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
Ryuichi Ueda
 
「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online
Hisatoshi Onishi
 
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
Ryuichi Ueda
 
USP 友の会 LT 資料 20130413
博文 斉藤
 
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
 
Windowsでも使えるシェル
Tetsuya Hasegawa
 
20150201 シェル芸勉強会LT GlueLangについて (シェル書いてますが何か?)
Ryuichi Ueda
 
10分で分かるr言語入門ver2.2 13 0223
Nobuaki Oshiro
 
USP友の会第五回シェル芸勉強会問題だけスライド
Ryuichi Ueda
 
20131222 第八回シェル芸勉強会問題集
Ryuichi Ueda
 
第41回シェル芸勉強会 午後オープニング
Ryuichi Ueda
 
20130216 シェル芸爆破デスマッチ勉強会 問題集
Ryuichi Ueda
 
Ad

More from Ryuichi Ueda (20)

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

Recently uploaded (10)

PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 

20130223 OSC Tokyo/Spring