SlideShare a Scribd company logo
1 of 32
Download to read offline
第3回シェル芸爆破	
  
デスマッチ勉強会	
USP友の会 上田 隆一
近況	
•  35歳になった。	
  
•  将軍は生きていたら72歳。	
  




•  あさって発売のソフトウェアデザイン買ってね	
  
      –  テーマ「シェルで画像処理」	
  
      (暴走が止まらない)	
  

2013/02/16	
      第3回シェル芸爆破 デスマッチ勉強会	
   2
はじめに	

	
  

               大変だ!	


2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   3
はじめに	
•  最近、こんな危険なものが発見されました。	
  


                「ソースコード」と呼ばれる	
  
               遠隔操作ウイルスのプログラム	




2013/02/16	
        第3回シェル芸爆破 デスマッチ勉強会	
   4
ソースコードは危険	
•  コンピュータウィルスは、ほぼ100%の割合で	
  
   ソースコードから生成されている。	
  
•  北朝鮮の地下核実験・ミサイルにも利用されている。	
  
•  スパゲッティー形状のソースコードは特に凶悪。	
  
•  作っていると不眠症になる。	
  
•  ほら、貴方のPCにも・・・	
  




                                        あぶない	
2013/02/16	
     第3回シェル芸爆破 デスマッチ勉強会	
            5
「ソースコード」を生まないために	
•  ただ一つの答え	
  


                 ワンライナー	
  
               (a.k.a.	
  シェル芸)	
  


2013/02/16	
       第3回シェル芸爆破 デスマッチ勉強会	
   6
シェル芸とは?	
•  マウスも使わず、ソースコードも残さず、	
  
   GUIツールを立ち上げる間もなく、	
  
   あらゆる調査・計算・テキスト処理を	
  
   コマンド入力一撃で終わらす。	
  

     –  最近、一般名詞化	
  
        してきた	
  




                          海外のシェル芸勉強会の様子(USO800)	
2013/02/16	
      第3回シェル芸爆破 デスマッチ勉強会	
              7
今回の内容	
•  sed	
  が中心となる10問を準備	
  
      –  よく使う機能	
  
      –  あまり使わないけど知らないと困る機能	
      	
  




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   8
注意	
•  解答例は	
  Ubuntu	
  12.04	
  で作成	
  
•  *BSD,	
  Mac	
  の人は	
  gawk,	
  gsedを利用のこと	
  
•  その他環境でも、解答例にこだわらずネット等を	
  
   調べながら解答願います。	
  

•  暇を持て余した玄人の人は Haskell	
  で解いてください。	
  
   巡回して教えて上げてください。	
      –  今回はパズル的な問題は少ないので、慣れている人はすぐ解けます。	
  




2013/02/16	
         第3回シェル芸爆破 デスマッチ勉強会	
           9
問題1	
•  携帯電話の番号にハイフンを入れてみましょう。	




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   10
解答	
•  $	
  cat	
  tel	
  |	
  sed	
  's/(...)(....)(....)/1-­‐2-­‐3/'	
  

•  $	
  cat	
  tel	
  |	
  sed	
  's/(...)(....)/1-­‐2-­‐/'	
  
•  $	
  cat	
  tel	
  |	
  sed	
  's/^.../&-­‐/'	
  |	
  sed	
  's/....$/-­‐&/'	
  




2013/02/16	
                   第3回シェル芸爆破 デスマッチ勉強会	
                                   11
問題2	
•  余計な文字を除去してハイフンを入れましょう。	
  
   (+81...は国内の番号表記に変換)	
  




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   12
解答	
•  $	
  cat	
  tel2	
  |	
  sed	
  's/+81/0/g'	
  |	
  sed	
  's/[^0-­‐9]//g'	
  |	
  
   sed	
  's/^.../&-­‐/'	
  |	
  sed	
  's/....$/-­‐&/'	
  




2013/02/16	
                 第3回シェル芸爆破 デスマッチ勉強会	
                                  13
問題3	
•  100行に水増ししてください。	
  
   できればsedだけで。	




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   14
解答	
•  $	
  sed	
  p	
  hoge	
  |	
  sed	
  p	
  |	
  sed	
  p	
  |	
  sed	
  p	
  |	
  sed	
  p	
  |	
  sed	
  p	
  |	
  
   sed	
  p	
  |	
  sed	
  -­‐n	
  '1,100p'	
  	
  

•  $	
  sed	
  's/.*/&&&&&&&&&&&/g'	
  hoge	
  |	
  sed	
  's/.*/
   &&&&&&&&&&&/g'	
  |	
  sed	
  's/!/!n/g'	
  |	
  sed	
  -­‐n	
  
   '1,100p'	
  

•  $	
  cat	
  hoge	
  |	
  awk	
  '{for(i=1;i<=100;i++){print}}'	
  	
  


2013/02/16	
                             第3回シェル芸爆破 デスマッチ勉強会	
                                                       15
問題4	
•  カンマ、句点を全て全角の句点に	
  
   変換してください。	




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   16
解答	
•  $	
  cat	
  sakubun	
  |	
  sed	
  'y/,,、/、、、/'	
  
•  $	
  cat	
  sakubun	
  |	
  sed	
  's/,/、/g'	
  |	
  sed	
  's/、/、/g'	
  |	
  sed	
  
   's/	
  ,/、/g'	
  
•  $	
  cat	
  sakubun	
  |	
  sed	
  's/[,	
  、,]/、/g'	
  	
  

•  trだと失敗します。	
  
      –  $	
  cat	
  sakubun	
  |	
  tr	
  ',,、'	
  '、、、'	
  
         働けど、働けど?我??暮らし???楁にならず???JITコンパ??ラ	
  



2013/02/16	
                    第3回シェル芸爆破 デスマッチ勉強会	
                                       17
問題5	
•  次の変換を行ってください。	
  
      –  	
  ¥_	
  を	
  _	
  
      –  	
  _	
  を半角空白	
  




•  こうなればよい	
  
      –  ¥␣ダッダーン_!␣ボヨヨン_ボヨヨン␣	
2013/02/16	
                第3回シェル芸爆破 デスマッチ勉強会	
   18
解答	
•  出現しない文字に退避	
  
   –  BEL	
  
         •  $	
  cat	
  dadan	
  |	
  sed	
  's/_/a/g'	
  |	
  sed	
  's/_/	
  /g'	
  |	
  sed	
  's/a/_/g'	
  
   –  NULL	
  
         •  $	
  cat	
  dadan	
  |	
  sed	
  's/_/x0/g'	
  |	
  sed	
  's/_/	
  /g'	
  |	
  sed	
  's/x0/_/g'	
  
   –  他に垂直タブ	
  ¥v	
  等	
  

•  sed二つでもできる	
  
   –  $	
  cat	
  dadan	
  |	
  sed	
  's/([^])_/1	
  /g'	
  |	
  sed	
  's/_/_/g'	
  

 2013/02/16	
                          第3回シェル芸爆破 デスマッチ勉強会	
                                                   19
問題6	
•  文字数を数えてください。	




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   20
解答	

•  $	
  cat	
  aiueo	
  |	
  sed	
  's/./&n/g'	
  |	
  awk	
  'NF==1'	
  |	
  
   wc	
  -­‐l	
  
•  $	
  cat	
  aiueo	
  |	
  sed	
  's/./a/g'	
  |	
  tr	
  -­‐d	
  'n'	
  |	
  wc	
  –c	
  
•  $	
  cat	
  aiueo	
  |	
  tr	
  -­‐d	
  'n'	
  |	
  wc	
  -­‐m	
  




2013/02/16	
                      第3回シェル芸爆破 デスマッチ勉強会	
                                          21
問題7	
•  シバンを全て「#!/usr/local/bin/bash」	
  
   に変更してください	




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
    22
解答	
•  $	
  sed	
  -­‐i	
  '1s;#!/bin/bash;#!/usr/local/bin/bash;'	
  *.sh	
  

•  古いのを残す場合	
  
      –  $	
  ls	
  *.sh	
  |	
  while	
  read	
  f	
  ;	
  do	
  sed	
  's;#!/bin/bash;#!/usr/local/
         bin/bash;g'	
  $f	
  >	
  $f.new	
  ;	
  mv	
  $f	
  $f.old;	
  mv	
  $f.new	
  $f	
  ;	
  done	
  
      –  $	
  sed	
  -­‐i.bak	
  '1s;#!/bin/bash;#!/usr/local/bin/bash;'	
  *.sh	
  




2013/02/16	
                          第3回シェル芸爆破 デスマッチ勉強会	
                                                23
問題8	
•  table中のデータをスペース区切りで	
  
   抜き出してください。	


                                      a	
  b	
  c	
  
                                      1	
  2	
  3	



2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
                24
解答	
•  最初に改行を取るのがコツ	
  
      –  $	
  cat	
  hoge.html	
  |	
  tr	
  -­‐d	
  'nt'	
  |	
  sed	
  's/<tr>/n/g'	
  |	
  
         grep	
  td	
  |	
  sed	
  's;</tr>.*;;'	
  |	
  sed	
  's/<td>//g'	
  |	
  sed	
  
         's;</td>;	
  ;g'	
  
      –  $	
  cat	
  hoge.html	
  |	
  grep	
  -­‐v	
  table	
  |	
  tr	
  -­‐d	
  'nt'	
  |	
  sed	
  
         's/<tr>/n/g'	
  |	
  sed	
  's;<td>([^<]*)</td>;1	
  ;g'	
  |	
  
         awk	
  'NF==4{print	
  $1,$2,$3}'	
  




2013/02/16	
                         第3回シェル芸爆破 デスマッチ勉強会	
                                                   25
問題9	
•  aliasを解除してください。(bashで)	




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   26
解答	
•  $	
  alias	
  |	
  sed	
  's/=..*//'	
  |	
  awk	
  '{print	
  $2}'	
  >	
  list	
  ;	
  for	
  c	
  in	
  
   $(cat	
  list)	
  ;	
  do	
  unalias	
  $c	
  ;done	
  
•  $	
  alias	
  |	
  sed	
  's/=..*//'	
  |	
  sed	
  's/..*	
  //'	
  >	
  list	
  ;	
  while	
  read	
  
   c;	
  do	
  unalias	
  $c;	
  done	
  <	
  list	
  

•  パイプでつなぐと失敗する	
  
      –  $	
  alias	
  |	
  sed	
  's/=..*//'	
  |	
  self	
  2	
  |	
  while	
  read	
  c;	
  do	
  unalias	
  $c;	
  
         done	
  
      (サブシェルの中で unalias	
  が起こる)	
  



2013/02/16	
                             第3回シェル芸爆破 デスマッチ勉強会	
                                                        27
問題10	
•  以下の部分だけ抽出してください。	
  
      –  %%1%%	
  と	
  %%2%%	
  の間	
  
      –  %%3%%	
  と	
  %%4%%	
  の間	




2013/02/16	
            第3回シェル芸爆破 デスマッチ勉強会	
   28
解答	
•  (下にいくほど不真面目な解答)	
  
      –  $	
  cat	
  coco	
  |	
  sed	
  -­‐n	
  -­‐e	
  '/%%1%%/,/%%2%%/p'	
  -­‐e	
  '/%%3%
         %/,/%%4%%/p'	
  |	
  grep	
  -­‐v	
  %%	
  
      –  $	
  cat	
  coco	
  |	
  sed	
  -­‐n	
  -­‐e	
  '/1/,/2/p'	
  -­‐e	
  '/3/,/4/p'	
  |	
  grep	
  -­‐v	
  %%	
  
      –  $	
  cat	
  coco	
  |	
  sed	
  -­‐n	
  '/[13]/,/[24]/p'	
  |	
  grep	
  -­‐v	
  %%	
  
      –  $	
  cat	
  coco	
  |	
  sed	
  -­‐n	
  '/%/,/%/p'	
  |	
  grep	
  -­‐v	
  %%	




2013/02/16	
                              第3回シェル芸爆破 デスマッチ勉強会	
                                                             29
延長戦	
•  精度よく足してください	
  
   (答え:3150101.7933532523523)	
  




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   30
解答	
•  $	
  tr	
  'n'	
  '+'	
  <	
  num	
  |	
  sed	
  's/+$//'	
  |	
  sed	
  's/+-­‐/-­‐/g'	
  
     |	
  sed	
  's/[-­‐+]/	
  &	
  /g'	
  |	
  awk	
  '{print}'	
  |	
  bc	
  	
  
	
  
•  $	
  sm2	
  0	
  0	
  1	
  1	
  num	
  




2013/02/16	
                     第3回シェル芸爆破 デスマッチ勉強会	
                                        31
おわりに	
•  すぐにザーギョーのショーオーに移動のこと。	
  




2013/02/16	
   第3回シェル芸爆破 デスマッチ勉強会	
   32

More Related Content

What's hot

部活でシェル芸がはやらない
部活でシェル芸がはやらない部活でシェル芸がはやらない
部活でシェル芸がはやらないxztaityozx
 
「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online
「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online
「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara onlineHisatoshi Onishi
 
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方Masaru Mizuochi
 
MAN OF BASH #ssmjp 2013.09.25
MAN OF BASH #ssmjp 2013.09.25MAN OF BASH #ssmjp 2013.09.25
MAN OF BASH #ssmjp 2013.09.25th0x0472
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413博文 斉藤
 
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」Hiromu Shioya
 

What's hot (7)

部活でシェル芸がはやらない
部活でシェル芸がはやらない部活でシェル芸がはやらない
部活でシェル芸がはやらない
 
「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online
「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online
「はじめよう、シェル芸」オープンキャンプin南島原2020/OpenCamp in Minami-shimabara online
 
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
 
MAN OF BASH #ssmjp 2013.09.25
MAN OF BASH #ssmjp 2013.09.25MAN OF BASH #ssmjp 2013.09.25
MAN OF BASH #ssmjp 2013.09.25
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
 
Awk勉強会用資料
Awk勉強会用資料Awk勉強会用資料
Awk勉強会用資料
 
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
 

Similar to 20130216 シェル芸爆破デスマッチ勉強会

20130216 シェル芸爆破デスマッチ勉強会 問題集
20130216 シェル芸爆破デスマッチ勉強会 問題集20130216 シェル芸爆破デスマッチ勉強会 問題集
20130216 シェル芸爆破デスマッチ勉強会 問題集Ryuichi Ueda
 
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)mametter
 
怪物曲線2 - evalの復習
怪物曲線2 - evalの復習怪物曲線2 - evalの復習
怪物曲線2 - evalの復習Hexomino Hexomino
 

Similar to 20130216 シェル芸爆破デスマッチ勉強会 (6)

20130216 シェル芸爆破デスマッチ勉強会 問題集
20130216 シェル芸爆破デスマッチ勉強会 問題集20130216 シェル芸爆破デスマッチ勉強会 問題集
20130216 シェル芸爆破デスマッチ勉強会 問題集
 
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
 
Oneliner
OnelinerOneliner
Oneliner
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
Uspstudy20121208
Uspstudy20121208Uspstudy20121208
Uspstudy20121208
 
怪物曲線2 - evalの復習
怪物曲線2 - evalの復習怪物曲線2 - evalの復習
怪物曲線2 - evalの復習
 

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

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (8)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

20130216 シェル芸爆破デスマッチ勉強会

  • 2. 近況 •  35歳になった。   •  将軍は生きていたら72歳。   •  あさって発売のソフトウェアデザイン買ってね   –  テーマ「シェルで画像処理」   (暴走が止まらない)   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 2
  • 3. はじめに   大変だ! 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 3
  • 4. はじめに •  最近、こんな危険なものが発見されました。   「ソースコード」と呼ばれる   遠隔操作ウイルスのプログラム 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 4
  • 5. ソースコードは危険 •  コンピュータウィルスは、ほぼ100%の割合で   ソースコードから生成されている。   •  北朝鮮の地下核実験・ミサイルにも利用されている。   •  スパゲッティー形状のソースコードは特に凶悪。   •  作っていると不眠症になる。   •  ほら、貴方のPCにも・・・   あぶない 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 5
  • 6. 「ソースコード」を生まないために •  ただ一つの答え   ワンライナー   (a.k.a.  シェル芸)   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 6
  • 7. シェル芸とは? •  マウスも使わず、ソースコードも残さず、   GUIツールを立ち上げる間もなく、   あらゆる調査・計算・テキスト処理を   コマンド入力一撃で終わらす。   –  最近、一般名詞化   してきた   海外のシェル芸勉強会の様子(USO800) 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 7
  • 8. 今回の内容 •  sed  が中心となる10問を準備   –  よく使う機能   –  あまり使わないけど知らないと困る機能   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 8
  • 9. 注意 •  解答例は  Ubuntu  12.04  で作成   •  *BSD,  Mac  の人は  gawk,  gsedを利用のこと   •  その他環境でも、解答例にこだわらずネット等を   調べながら解答願います。   •  暇を持て余した玄人の人は Haskell  で解いてください。   巡回して教えて上げてください。 –  今回はパズル的な問題は少ないので、慣れている人はすぐ解けます。   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 9
  • 11. 解答 •  $  cat  tel  |  sed  's/(...)(....)(....)/1-­‐2-­‐3/'   •  $  cat  tel  |  sed  's/(...)(....)/1-­‐2-­‐/'   •  $  cat  tel  |  sed  's/^.../&-­‐/'  |  sed  's/....$/-­‐&/'   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 11
  • 12. 問題2 •  余計な文字を除去してハイフンを入れましょう。   (+81...は国内の番号表記に変換)   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 12
  • 13. 解答 •  $  cat  tel2  |  sed  's/+81/0/g'  |  sed  's/[^0-­‐9]//g'  |   sed  's/^.../&-­‐/'  |  sed  's/....$/-­‐&/'   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 13
  • 14. 問題3 •  100行に水増ししてください。   できればsedだけで。 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 14
  • 15. 解答 •  $  sed  p  hoge  |  sed  p  |  sed  p  |  sed  p  |  sed  p  |  sed  p  |   sed  p  |  sed  -­‐n  '1,100p'     •  $  sed  's/.*/&&&&&&&&&&&/g'  hoge  |  sed  's/.*/ &&&&&&&&&&&/g'  |  sed  's/!/!n/g'  |  sed  -­‐n   '1,100p'   •  $  cat  hoge  |  awk  '{for(i=1;i<=100;i++){print}}'     2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 15
  • 16. 問題4 •  カンマ、句点を全て全角の句点に   変換してください。 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 16
  • 17. 解答 •  $  cat  sakubun  |  sed  'y/,,、/、、、/'   •  $  cat  sakubun  |  sed  's/,/、/g'  |  sed  's/、/、/g'  |  sed   's/  ,/、/g'   •  $  cat  sakubun  |  sed  's/[,  、,]/、/g'     •  trだと失敗します。   –  $  cat  sakubun  |  tr  ',,、'  '、、、'   働けど、働けど?我??暮らし???楁にならず???JITコンパ??ラ   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 17
  • 18. 問題5 •  次の変換を行ってください。   –   ¥_  を  _   –   _  を半角空白   •  こうなればよい   –  ¥␣ダッダーン_!␣ボヨヨン_ボヨヨン␣ 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 18
  • 19. 解答 •  出現しない文字に退避   –  BEL   •  $  cat  dadan  |  sed  's/_/a/g'  |  sed  's/_/  /g'  |  sed  's/a/_/g'   –  NULL   •  $  cat  dadan  |  sed  's/_/x0/g'  |  sed  's/_/  /g'  |  sed  's/x0/_/g'   –  他に垂直タブ  ¥v  等   •  sed二つでもできる   –  $  cat  dadan  |  sed  's/([^])_/1  /g'  |  sed  's/_/_/g'   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 19
  • 20. 問題6 •  文字数を数えてください。 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 20
  • 21. 解答 •  $  cat  aiueo  |  sed  's/./&n/g'  |  awk  'NF==1'  |   wc  -­‐l   •  $  cat  aiueo  |  sed  's/./a/g'  |  tr  -­‐d  'n'  |  wc  –c   •  $  cat  aiueo  |  tr  -­‐d  'n'  |  wc  -­‐m   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 21
  • 22. 問題7 •  シバンを全て「#!/usr/local/bin/bash」   に変更してください 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 22
  • 23. 解答 •  $  sed  -­‐i  '1s;#!/bin/bash;#!/usr/local/bin/bash;'  *.sh   •  古いのを残す場合   –  $  ls  *.sh  |  while  read  f  ;  do  sed  's;#!/bin/bash;#!/usr/local/ bin/bash;g'  $f  >  $f.new  ;  mv  $f  $f.old;  mv  $f.new  $f  ;  done   –  $  sed  -­‐i.bak  '1s;#!/bin/bash;#!/usr/local/bin/bash;'  *.sh   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 23
  • 24. 問題8 •  table中のデータをスペース区切りで   抜き出してください。 a  b  c   1  2  3 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 24
  • 25. 解答 •  最初に改行を取るのがコツ   –  $  cat  hoge.html  |  tr  -­‐d  'nt'  |  sed  's/<tr>/n/g'  |   grep  td  |  sed  's;</tr>.*;;'  |  sed  's/<td>//g'  |  sed   's;</td>;  ;g'   –  $  cat  hoge.html  |  grep  -­‐v  table  |  tr  -­‐d  'nt'  |  sed   's/<tr>/n/g'  |  sed  's;<td>([^<]*)</td>;1  ;g'  |   awk  'NF==4{print  $1,$2,$3}'   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 25
  • 26. 問題9 •  aliasを解除してください。(bashで) 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 26
  • 27. 解答 •  $  alias  |  sed  's/=..*//'  |  awk  '{print  $2}'  >  list  ;  for  c  in   $(cat  list)  ;  do  unalias  $c  ;done   •  $  alias  |  sed  's/=..*//'  |  sed  's/..*  //'  >  list  ;  while  read   c;  do  unalias  $c;  done  <  list   •  パイプでつなぐと失敗する   –  $  alias  |  sed  's/=..*//'  |  self  2  |  while  read  c;  do  unalias  $c;   done   (サブシェルの中で unalias  が起こる)   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 27
  • 28. 問題10 •  以下の部分だけ抽出してください。   –  %%1%%  と  %%2%%  の間   –  %%3%%  と  %%4%%  の間 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 28
  • 29. 解答 •  (下にいくほど不真面目な解答)   –  $  cat  coco  |  sed  -­‐n  -­‐e  '/%%1%%/,/%%2%%/p'  -­‐e  '/%%3% %/,/%%4%%/p'  |  grep  -­‐v  %%   –  $  cat  coco  |  sed  -­‐n  -­‐e  '/1/,/2/p'  -­‐e  '/3/,/4/p'  |  grep  -­‐v  %%   –  $  cat  coco  |  sed  -­‐n  '/[13]/,/[24]/p'  |  grep  -­‐v  %%   –  $  cat  coco  |  sed  -­‐n  '/%/,/%/p'  |  grep  -­‐v  %% 2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 29
  • 30. 延長戦 •  精度よく足してください   (答え:3150101.7933532523523)   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 30
  • 31. 解答 •  $  tr  'n'  '+'  <  num  |  sed  's/+$//'  |  sed  's/+-­‐/-­‐/g'   |  sed  's/[-­‐+]/  &  /g'  |  awk  '{print}'  |  bc       •  $  sm2  0  0  1  1  num   2013/02/16 第3回シェル芸爆破 デスマッチ勉強会 31