SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
第8回クリスマスって何だっけ	
  
シェル芸なら知ってる勉強会	
USP友の会 上田 隆一
近況	
•  本、書きました。編集待ち。	
  
•  本、書いてます。	
  

2013/12/22	

第8回シェル芸勉強会	

2
イントロダクション	
•  いつもいまいちウケがよくないので割愛	

2013/12/22	

第8回シェル芸勉強会	

3
シェル芸とは?	
•  毎回書くのが面倒なので続きはWebで	
  
–  h/p://blog.ueda.asia/?page_id=1434	

2013/12/22	

第8回シェル芸勉強会	

4
今回の進め方	
•  ビギナー置いてきぼり現象にメス	
  
	
  
•  4〜6人でチーム分け	
  
–  できる人+そこそこの人+ビギナー※	
  
(※自称ビギナー除く)	
  
–  できる人:とりまとめ	
  
–  そこそこの人:考える、ビギナーの人のサポート	
  
–  ビギナーの人:見て真似をする	
2013/12/22	

第8回シェル芸勉強会	

5
•  問題は8問	
  
•  1問15分	
  
•  解答はUbuntu	
  Linuxで作りました。	

2013/12/22	

第8回シェル芸勉強会	

6
問題1	
•  二つずつ数字をフリップしてください	
  
•  例	
  
–  入力:	
  1	
  2	
  3	
  4	
  5	
  6	
  7	
  8	
  9	
  10	
  
–  出力:	
  2	
  1	
  4	
  3	
  6	
  5	
  8	
  7	
  10	
  9	

2013/12/22	

第8回シェル芸勉強会	

7
解答	
•  $	
  echo	
  {1..10}	
  |	
  xargs	
  -­‐n	
  2	
  |	
  awk	
  '{print	
  $2,$1}'	
  |	
  xargs	
  	
  
•  $	
  echo	
  {1..10}	
  |	
  	
  
awk	
  '{for(i=1;i<=9;i+=2){print	
  $(i+1),$i}}'	
  |	
  xargs	
  
•  $	
  echo	
  {1..10}	
  |	
  sed	
  's/[0-­‐9]*	
  [0-­‐9]*	
  /&n/g'	
  |	
  	
  
awk	
  '{print	
  $2,$1}'	
  |xargs	
  
•  Tukubai使用	
  
–  $	
  echo	
  {1..10}	
  |	
  yarr	
  -­‐2	
  |	
  self	
  2	
  1	
  |	
  yarr	
  
2013/12/22	

第8回シェル芸勉強会	

8
問題2	
•  「ユニケージ」「ユニゲージ」「UPS」「USP」の各個数を
数えてください。	
  
–  ユニゲージユニケージユニゲージUSP友の会USP友の会
UPS友の会UPS友の会	

2013/12/22	

第8回シェル芸勉強会	

9
解答	
•  $	
  echo	
  <省略>|	
  	
  
grep	
  -­‐oE	
  "(ユニゲージ|ユニケージ|USP|UPS)"	
  |	
  sort	
  |	
  uniq	
  -­‐c	
  
•  ファイルを使う方法	
  
–  $	
  cat	
  memo	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ユニケージ	
ユニゲージ	
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  USP	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  UPS	
  
–  $	
  echo	
  <省略>|	
  grep	
  -­‐o	
  -­‐f	
  memo	
  |	
  sort	
  |	
  uniq	
  -­‐c	
  

2013/12/22	

第8回シェル芸勉強会	

10
問題3	
•  次の4個のファイルを作り、同じ内容のものを	
  
探し出すワンライナーを作成してください。	
  
–  echo	
  12345	
  >	
  file1	
  
–  echo	
  23456	
  >	
  file2	
  
–  echo	
  12345	
  >	
  file3	
  
–  echo	
  45678	
  >	
  file4	

2013/12/22	

第8回シェル芸勉強会	

11
解答	
•  $	
  ls	
  file[1-­‐4]	
  |	
  xargs	
  md5sum	
  |	
  	
  
awk	
  '{a[$1]	
  =	
  a[$1]"	
  "$2}END{for(v	
  in	
  a){print	
  a[v]}}'	
  |	
  
awk	
  'NF>1'	
  
•  Tukubai使用	
  
–  $	
  ls	
  file[1-­‐4]	
  |	
  xargs	
  md5sum	
  |	
  sort	
  |	
  yarr	
  num=1	
  |	
  awk	
  
'NF>2'	

2013/12/22	

第8回シェル芸勉強会	

12
問題4	
•  数字の列を偶数と奇数に分けてください。	
  
ただし、偶数、奇数の列内での数字の並びを	
  
変えないように。	
  
•  例	
  
–  入力:3	
  8	
  2	
  10	
  1	
  8	
  9	
  
–  出力:8	
  2	
  10	
  8	
  3	
  1	
  9	
  

2013/12/22	

第8回シェル芸勉強会	

13
解答	
•  $	
  echo	
  3	
  8	
  2	
  10	
  1	
  8	
  9	
  |	
  tr	
  '	
  '	
  'n'	
  |	
  
awk	
  '{print	
  $1%2,$1}'	
  |	
  sort	
  -­‐s	
  -­‐k1,1	
  |	
  
awk	
  '{print	
  $2}'	
  |	
  xargs	
  
	
  
•  $	
  echo	
  3	
  8	
  2	
  10	
  1	
  8	
  9	
  |	
  tr	
  '	
  '	
  'n'	
  |	
  	
  
awk	
  'BEGIN{b=0}$1%2{a[b]=$1;b++}$1%2==0{print}
END{for(i=0;i<b;i++){print	
  a[i]}}'	
  |	
  xargs	
  

2013/12/22	

第8回シェル芸勉強会	

14
問題5	
•  次のように連続した0と1の数を数え、	
  
次のように変換してください	
  
–  0と1が連続したときは0	
  or	
  1の後ろに	
  
個数をつけてスペースを挿入	
  
–  0と1が連続していないときはスペース区切りでそのまま出力	
  
–  例	
  
•  入力:	
  000001111111111001010	
  
•  出力:	
  05	
  110	
  02	
  1	
  0	
  1	
  0	

2013/12/22	

第8回シェル芸勉強会	

15
解答	
•  $	
  echo	
  000001111111111001010	
  |	
  sed	
  's/./&n/g'	
  |	
  	
  
uniq	
  -­‐c	
  |	
  awk	
  'NF==2{print	
  $2,$1}'	
  |	
  	
  
sed	
  's/	
  1$//'	
  |	
  tr	
  -­‐d	
  '	
  '	
  |	
  xargs	

2013/12/22	

第8回シェル芸勉強会	

16
問題6	
•  数字の列を次のように整形してください	
  
–  小さい順に空白区切りで並んだ自然数に対し、	
  
2個以上の数字が連続した場合は両端の数字だけ残して	
  
間にハイフンを入れる	
  
–  例	
  
•  入力:1	
  2	
  3	
  5	
  6	
  8	
  10	
  11	
  12	
  15	
  
•  出力:1-­‐3	
  5-­‐6	
  8	
  10-­‐12	
  15	
  

2013/12/22	

第8回シェル芸勉強会	

17
解答	
•  $	
  echo	
  1	
  2	
  3	
  5	
  6	
  8	
  10	
  11	
  12	
  15	
  |	
  tr	
  '	
  '	
  'n'	
  |	
  	
  
awk	
  'BEGIN{a=1}{print	
  ($1-­‐a==1?",":"	
  ")$1;a=$1}'	
  |	
  	
  
tr	
  -­‐d	
  'n'	
  |	
  sed	
  's/$/n/g'	
  |	
  sed	
  's/,[^	
  ]*,/-­‐/g'	
  |	
  tr	
  ","	
  "-­‐"	
  
•  $	
  echo	
  1	
  2	
  3	
  5	
  6	
  8	
  10	
  11	
  12	
  15	
  |	
  	
  
awk	
  '{for(i=1;i<=NF;i++){print	
  $i,$(i+1)-­‐$i}}'	
  |	
  	
  
awk	
  '$2==1{print	
  $1","}$2!=1{print	
  $1"	
  "}'	
  |	
  	
  
tr	
  -­‐d	
  'n'	
  |	
  tr	
  ','	
  '-­‐'	
  |	
  sed	
  's/-­‐[0-­‐9]*-­‐/-­‐/g'	
  |	
  awk	
  '{print}'	
  
•  $	
  echo	
  1	
  2	
  3	
  5	
  6	
  8	
  10	
  11	
  12	
  15	
  |	
  xargs	
  -­‐n	
  1	
  |	
  	
  
awk	
  '{print	
  $1,$i-­‐a;a=$1}'	
  |	
  awk	
  '$2>1{print	
  "";prino	
  $1"	
  "}
$2==1{prino	
  $1"	
  "}'	
  |	
  
	
  awk	
  '{print	
  $1,$NF}'	
  |	
  awk	
  '$1==$2{print	
  $1}$1!=$2{print}'	
  |	
  
	
  tr	
  '	
  '	
  '-­‐'	
  |	
  xargs	
2013/12/22	

第8回シェル芸勉強会	

18
問題7	
•  次の文字列は、数字3桁の安直なパスワードを	
  
MD5ハッシュしたものです。	
  
パスワードを破ってください。	
  
「250cf8b51c773f3f8dc8b4be867a9a02」	
  
–  注意:MD5値を求めるときには改行記号を入れていません。	

2013/12/22	

第8回シェル芸勉強会	

19
解答	
•  $	
  seq	
  -­‐w	
  000	
  999	
  |	
  	
  
while	
  read	
  n	
  ;	
  do	
  echo	
  -­‐n	
  $n"	
  "	
  ;echo	
  -­‐n	
  $n	
  |	
  	
  
md5sum;	
  done	
  |	
  grep	
  250cf8b51	
  
•  $	
  echo	
  'echo	
  -­‐n	
  @"	
  ";	
  echo	
  -­‐n	
  @	
  |	
  md5sum'	
  |	
  	
  
awk	
  '{for(i=0;i<=999;i++){print}}'	
  |	
  	
  
awk	
  '{gsub(/@/,sprino("%03d",NR-­‐1),$0);print}'	
  |	
  
	
  sh	
  |	
  grep	
  250cf8b51	
  

2013/12/22	

第8回シェル芸勉強会	

20
問題8	
•  /usr/share/dict/wordsでしりとりを完成させてくださ
い	
  
–  8つ以上単語を並べること	
  

•  辞書のインストール	
  
–  sudo	
  apt-­‐get	
  install	
  wamerican等	
  

2013/12/22	

第8回シェル芸勉強会	

21
解答	
•  Tukubai使用	
  
–  $	
  sort	
  -­‐R	
  /usr/share/dict/words	
  |	
  yarr	
  -­‐2	
  |	
  	
  
awk	
  'substr($1,length($1),1)	
  ==	
  substr($2,1,1)'	
  |	
  	
  
sort	
  -­‐R	
  |	
  yarr	
  -­‐4	
  |	
  
awk	
  'substr($2,length($2),1)	
  ==	
  substr($3,1,1)'	
  |	
  	
  
sort	
  -­‐R	
  |	
  yarr	
  -­‐8	
  |	
  
awk	
  'substr($4,length($4),1)	
  ==	
  substr($5,1,1)'	
  

•  インチキ	
  
–  $	
  grep	
  '^s'	
  /usr/share/dict/words	
  |	
  grep	
  's$'	
  |	
  tr	
  'n'	
  '	
  '	

2013/12/22	

第8回シェル芸勉強会	

22
おわりに	
•  カレー屋に移動!	
  

2013/12/22	

第8回シェル芸勉強会	

23

Mais conteúdo relacionado

Mais procurados

USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
博文 斉藤
 

Mais procurados (10)

部活でシェル芸がはやらない
部活でシェル芸がはやらない部活でシェル芸がはやらない
部活でシェル芸がはやらない
 
「はじめよう、シェル芸」オープンキャンプ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 クリエイティブコーディングの行方
 
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
 
⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
 
カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化
 
pixivとl10n/i18n
pixivとl10n/i18npixivとl10n/i18n
pixivとl10n/i18n
 
入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 

Mais de Ryuichi Ueda

Mais de 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を 使ったロボットシステム」
 

Último

Último (12)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/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 を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: 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
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: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...
 

20131222 第8回シェル芸勉強会スライド