SlideShare a Scribd company logo
1 of 31
Download to read offline
USP友の会
会長 presents 第2回チキチキ!
  シェル芸人養成勉強会

   USP友の会 上田 隆一
近況
●   原稿いっぱい書いてます。




2012年12月8日   USP友の会勉強会   2
今日やること




   USP友の会が何の会なのか知らしめる




2012年12月8日    USP友の会勉強会   3
今日やること
●   USP友の会は何の会か知ってますか?

    –   無停電なんとか装置ではありません。

    –   会員殿、我々の会は、なんの会でしょう?




2012年12月8日       USP友の会勉強会    4
今日やること
●   【重要】我々の会は、
    アル中のリハビリ互助会ではない。




    2012年12月8日    USP友の会勉強会   5
今日やること


   ●   飲んでばっかりはあかん!
       – シェル芸で脳味噌デトックス




2012年12月8日    USP友の会勉強会   6
シェル芸とは? (スライド再利用!)


●   マウスも使わず、
    プログラムも書かず、
    GUIツールを立ち上げる間もなく、
    あらゆる調査・計算・ファイル処理を
    コマンド入力一撃で終わらす。


                                   ※シェル芸人イメージ
                                   (麻雀は天和で終わらす)
    2012年12月8日         USP友の会勉強会              7
ということで(これも再利用)
●    端末操作だけでいろんな仕事を
     できるようになってもらいます。

     –   シェルスクリプト?そんな大げさなもんいらん。
     –   今回の内容をおさえればクソ長いシェルスクリプトは
         書かなくなることでしょう・・・

     –   今回はエディタすら使用禁止



    2012年12月8日       USP友の会勉強会      8
時間割
●   ~18:30
    –   最後までワンライナー地獄




2012年12月8日       USP友の会勉強会   9
問題の解き方
●   基本はbashかshで

●   使えるコマンドはなんでも使え
    –   posixとか気にするのはできるようになってから!


●   できる人はいろいろな方法で挑戦
    –   それも終わったら他の人を指導
    –   玄人勢の献身がこの勉強会を成功させます!

2012年12月8日        USP友の会勉強会         10
問題1: 文字化けしたファイルの削除
●   次のように、空ファイル abc, DEFG と、
    文字化けした空ファイルを作ってください。

●   文字化けしたファイルを消してください。
    ただし、日本語の入力は禁止です。




2012年12月8日     USP友の会勉強会       11
問題1: 答え
●   シンプルな答え
    –   $ rm [!a-zA-Z]*

●   確認してから消す
    –   $ echo [!a-zA-Z]* | xargs rm

●   ワイルドカードが思いつかない場合
    –   $ ls | grep '[^a-zA-Z]' | xargs rm


2012年12月8日                   USP友の会勉強会       12
問題2: 計算
●   以下のファイル中の数字を全部足し算してください。




2012年12月8日    USP友の会勉強会    13
問題2: 答え
●   $ cat num | awk '{for(i=1;i<=NF;i++)
    {a+=$i}}END{print a}'
●   $ tr ' ' 'n' < num | awk '{a+=$1}END{print a}'

●   Tukubai
    –   $ tarr num | sm2 0 0 1 1
    –   $ yarr num | ysum | self NF



2012年12月8日                USP友の会勉強会                   14
問題3: 条件でデータを取り出し
●   右のhogeファイルから、
    aとbについてそれぞれ一番
    大きな数を求めましょう。




2012年12月8日   USP友の会勉強会   15
問題3: 答え
●   $ cat hoge | sort -k1,1 -k2,2nr | uniq -w 1
●   $ cat hoge | sort -k1,1 -k2,2nr | sort -u -k1,1

●   Tukubai 使用
    –   $ cat hoge | sort -k1,1 -k2,2nr | getfirst 1 1
    –   $ cat hoge | sort -k1,1 -k2,2n | getlast 1 1
    –   $ cat hoge | sort -k1,1 -k2,2nr | yarr num=1 | self 1 2


2012年12月8日                  USP友の会勉強会                       16
問題4: 計算
●   以下のファイル中の数字を、
    キー(a,b)ごとに全部足し算してください。




2012年12月8日     USP友の会勉強会     17
問題4: 答え
●   $ sort num2 | awk '{for(i=1;i<=NF;i++)
    {if($1=="a"){a+=$i}else{b+=$i}}}END{print
    a,b}'

●   Tukubai
    –   $ tarr num=1 num2 | sort | sm2 1 1 2 2




2012年12月8日               USP友の会勉強会               18
問題5: 日付と曜日
●   以下のようにファイルを作って、
    何曜日が何日あるか集計してください。




2012年12月8日      USP友の会勉強会   19
問題5: 答え
●   $ cat osyoga2 | while read d ; do date -d $d ; done | sed
    's/.*(.)曜日.*$/1/' | sort | uniq -c

●   $ cat osyoga2 | date -f - | awk '{print $4}' | sort | uniq -c

●   Tukubai 使用
    –   $ cat osyoga2 | yobi -j 1 | self 2 | sort | count 1 1
●   日曜日から出力
    –   $ cat osyoga2 | yobi 1 | yobi -j 1 | self 3 2 | sort | count 1 2 | delf 1




2012年12月8日                           USP友の会勉強会                                      20
問題6: ダミーデータの作成
●   seq 1 100 の出力をランダムに並び替えてください。




2012年12月8日     USP友の会勉強会        21
問題6: 答え
●   $ seq 1 100 | awk '{print rand(),$1}' | sort |
    awk '{print $2}'
●   $ seq 1 100 | while read n ; do echo
    $RANDOM $n ; done | sort | while read m n ;
    do echo $n ; done




2012年12月8日             USP友の会勉強会                     22
問題7: 検索
●   大文字小文字を区別しない場合、以下の辞書ファイルから、
    重複する単語を検索してください。
     –   asciiコード以外の字がありますが、
         とりあえず気にしないでください。




    2012年12月8日         USP友の会勉強会   23
問題7: 答え
●   $ cat /usr/share/dict/words | tr 'A-Z' 'a-z' |
    sort | uniq -d
●   $ cat /usr/share/dict/words | tr 'A-Z' 'a-z' |
    sort | uniq -c | awk '$1>1'




2012年12月8日             USP友の会勉強会                     24
問題8: ファイルの比較
●   file2から、file1にない数字を抽出してください。




2012年12月8日       USP友の会勉強会         25
問題8: 答え
●   $ diff file1 file2 | awk '$1==">"{print $2}'
●   $ comm -13 file1 file2
●   $ cat file2 | grep -v -f file1
●   $ join -v2 file1 file2
●   $ awk '{print $1,FILENAME}' file{1,2} | sort -u -k1,1 | grep file2 |
    self 1

●   Tukubai
    –   $ awk '{print $1,FILENAME}' file{1,2} | sort | yarr num=1 | awk
        '$2~/2$/' | self 1
    –   $ join0 +ng key=1 file1 file2 > /dev/null


2012年12月8日                           USP友の会勉強会                             26
問題9: 形式変換
●   左のようなファイルを作り、
    右のように整形してください。




2012年12月8日     USP友の会勉強会   27
問題9: 答え
●   $ cat game | awk '{print $2,$1,$3}' | sort | awk '{print
    $1,$3}' | awk 'BEGIN{k=""}{if(k!=$1){print
    "";k=$1;printf("%s ",$1)}printf("%s ",$2)}END{print ""}' |
    sed 's/^$/ 1 2 3 4 5/'

●   Tukubai使用
    –   $ map num=1 game | tateyoko | keta | sed 's/*/ /'




2012年12月8日                 USP友の会勉強会                         28
問題10: ファイルの結合
●   file1、file2 から、下の出力を得てください。




2012年12月8日       USP友の会勉強会        29
問題10: 答え
●   $ sort -ms -k1,1 file1 file2 | awk 'NR%2==1{printf $0}NR
    %2==0{print " "$2}'
●   $ sort -m file1 file2 | awk 'NR%2==1{printf $0}NR
    %2==0{print " "$2}' | awk '{print $1,$3,$2}'
●   join file1 file2

●   Tukubai
    –   $ loopj num=1 file1 file2
    –   $ join1 key=1 file1 file2
    –   $ up3 key=1 file1 file2 | yarr num=1


2012年12月8日                     USP友の会勉強会                       30
まとめ
●   お疲れさまでした!!
●   2月あたりにまたやりますよ。

●   さあ、飲みにいきましょう。




2012年12月8日       USP友の会勉強会   31

More Related Content

Similar to Uspstudy20121208

2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#382012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38Ryuichi Ueda
 
20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライドRyuichi Ueda
 
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会Ryuichi Ueda
 
OSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentationOSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentationRyuichi Ueda
 
20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/SpringRyuichi Ueda
 
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Ryuichi Ueda
 
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会Ryuichi Ueda
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用Nobuaki Oshiro
 

Similar to Uspstudy20121208 (8)

2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#382012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38
 
20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド
 
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
 
OSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentationOSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentation
 
20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring
 
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会
 
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用
 

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

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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介: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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介: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
 
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
 

Recently uploaded (9)

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)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介: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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介: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
 
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...
 

Uspstudy20121208

  • 1. USP友の会 会長 presents 第2回チキチキ! シェル芸人養成勉強会 USP友の会 上田 隆一
  • 2. 近況 ● 原稿いっぱい書いてます。 2012年12月8日 USP友の会勉強会 2
  • 3. 今日やること USP友の会が何の会なのか知らしめる 2012年12月8日 USP友の会勉強会 3
  • 4. 今日やること ● USP友の会は何の会か知ってますか? – 無停電なんとか装置ではありません。 – 会員殿、我々の会は、なんの会でしょう? 2012年12月8日 USP友の会勉強会 4
  • 5. 今日やること ● 【重要】我々の会は、 アル中のリハビリ互助会ではない。 2012年12月8日 USP友の会勉強会 5
  • 6. 今日やること ● 飲んでばっかりはあかん! – シェル芸で脳味噌デトックス 2012年12月8日 USP友の会勉強会 6
  • 7. シェル芸とは? (スライド再利用!) ● マウスも使わず、 プログラムも書かず、 GUIツールを立ち上げる間もなく、 あらゆる調査・計算・ファイル処理を コマンド入力一撃で終わらす。 ※シェル芸人イメージ (麻雀は天和で終わらす) 2012年12月8日 USP友の会勉強会 7
  • 8. ということで(これも再利用) ● 端末操作だけでいろんな仕事を できるようになってもらいます。 – シェルスクリプト?そんな大げさなもんいらん。 – 今回の内容をおさえればクソ長いシェルスクリプトは 書かなくなることでしょう・・・ – 今回はエディタすら使用禁止 2012年12月8日 USP友の会勉強会 8
  • 9. 時間割 ● ~18:30 – 最後までワンライナー地獄 2012年12月8日 USP友の会勉強会 9
  • 10. 問題の解き方 ● 基本はbashかshで ● 使えるコマンドはなんでも使え – posixとか気にするのはできるようになってから! ● できる人はいろいろな方法で挑戦 – それも終わったら他の人を指導 – 玄人勢の献身がこの勉強会を成功させます! 2012年12月8日 USP友の会勉強会 10
  • 11. 問題1: 文字化けしたファイルの削除 ● 次のように、空ファイル abc, DEFG と、 文字化けした空ファイルを作ってください。 ● 文字化けしたファイルを消してください。 ただし、日本語の入力は禁止です。 2012年12月8日 USP友の会勉強会 11
  • 12. 問題1: 答え ● シンプルな答え – $ rm [!a-zA-Z]* ● 確認してから消す – $ echo [!a-zA-Z]* | xargs rm ● ワイルドカードが思いつかない場合 – $ ls | grep '[^a-zA-Z]' | xargs rm 2012年12月8日 USP友の会勉強会 12
  • 13. 問題2: 計算 ● 以下のファイル中の数字を全部足し算してください。 2012年12月8日 USP友の会勉強会 13
  • 14. 問題2: 答え ● $ cat num | awk '{for(i=1;i<=NF;i++) {a+=$i}}END{print a}' ● $ tr ' ' 'n' < num | awk '{a+=$1}END{print a}' ● Tukubai – $ tarr num | sm2 0 0 1 1 – $ yarr num | ysum | self NF 2012年12月8日 USP友の会勉強会 14
  • 15. 問題3: 条件でデータを取り出し ● 右のhogeファイルから、 aとbについてそれぞれ一番 大きな数を求めましょう。 2012年12月8日 USP友の会勉強会 15
  • 16. 問題3: 答え ● $ cat hoge | sort -k1,1 -k2,2nr | uniq -w 1 ● $ cat hoge | sort -k1,1 -k2,2nr | sort -u -k1,1 ● Tukubai 使用 – $ cat hoge | sort -k1,1 -k2,2nr | getfirst 1 1 – $ cat hoge | sort -k1,1 -k2,2n | getlast 1 1 – $ cat hoge | sort -k1,1 -k2,2nr | yarr num=1 | self 1 2 2012年12月8日 USP友の会勉強会 16
  • 17. 問題4: 計算 ● 以下のファイル中の数字を、 キー(a,b)ごとに全部足し算してください。 2012年12月8日 USP友の会勉強会 17
  • 18. 問題4: 答え ● $ sort num2 | awk '{for(i=1;i<=NF;i++) {if($1=="a"){a+=$i}else{b+=$i}}}END{print a,b}' ● Tukubai – $ tarr num=1 num2 | sort | sm2 1 1 2 2 2012年12月8日 USP友の会勉強会 18
  • 19. 問題5: 日付と曜日 ● 以下のようにファイルを作って、 何曜日が何日あるか集計してください。 2012年12月8日 USP友の会勉強会 19
  • 20. 問題5: 答え ● $ cat osyoga2 | while read d ; do date -d $d ; done | sed 's/.*(.)曜日.*$/1/' | sort | uniq -c ● $ cat osyoga2 | date -f - | awk '{print $4}' | sort | uniq -c ● Tukubai 使用 – $ cat osyoga2 | yobi -j 1 | self 2 | sort | count 1 1 ● 日曜日から出力 – $ cat osyoga2 | yobi 1 | yobi -j 1 | self 3 2 | sort | count 1 2 | delf 1 2012年12月8日 USP友の会勉強会 20
  • 21. 問題6: ダミーデータの作成 ● seq 1 100 の出力をランダムに並び替えてください。 2012年12月8日 USP友の会勉強会 21
  • 22. 問題6: 答え ● $ seq 1 100 | awk '{print rand(),$1}' | sort | awk '{print $2}' ● $ seq 1 100 | while read n ; do echo $RANDOM $n ; done | sort | while read m n ; do echo $n ; done 2012年12月8日 USP友の会勉強会 22
  • 23. 問題7: 検索 ● 大文字小文字を区別しない場合、以下の辞書ファイルから、 重複する単語を検索してください。 – asciiコード以外の字がありますが、 とりあえず気にしないでください。 2012年12月8日 USP友の会勉強会 23
  • 24. 問題7: 答え ● $ cat /usr/share/dict/words | tr 'A-Z' 'a-z' | sort | uniq -d ● $ cat /usr/share/dict/words | tr 'A-Z' 'a-z' | sort | uniq -c | awk '$1>1' 2012年12月8日 USP友の会勉強会 24
  • 25. 問題8: ファイルの比較 ● file2から、file1にない数字を抽出してください。 2012年12月8日 USP友の会勉強会 25
  • 26. 問題8: 答え ● $ diff file1 file2 | awk '$1==">"{print $2}' ● $ comm -13 file1 file2 ● $ cat file2 | grep -v -f file1 ● $ join -v2 file1 file2 ● $ awk '{print $1,FILENAME}' file{1,2} | sort -u -k1,1 | grep file2 | self 1 ● Tukubai – $ awk '{print $1,FILENAME}' file{1,2} | sort | yarr num=1 | awk '$2~/2$/' | self 1 – $ join0 +ng key=1 file1 file2 > /dev/null 2012年12月8日 USP友の会勉強会 26
  • 27. 問題9: 形式変換 ● 左のようなファイルを作り、 右のように整形してください。 2012年12月8日 USP友の会勉強会 27
  • 28. 問題9: 答え ● $ cat game | awk '{print $2,$1,$3}' | sort | awk '{print $1,$3}' | awk 'BEGIN{k=""}{if(k!=$1){print "";k=$1;printf("%s ",$1)}printf("%s ",$2)}END{print ""}' | sed 's/^$/ 1 2 3 4 5/' ● Tukubai使用 – $ map num=1 game | tateyoko | keta | sed 's/*/ /' 2012年12月8日 USP友の会勉強会 28
  • 29. 問題10: ファイルの結合 ● file1、file2 から、下の出力を得てください。 2012年12月8日 USP友の会勉強会 29
  • 30. 問題10: 答え ● $ sort -ms -k1,1 file1 file2 | awk 'NR%2==1{printf $0}NR %2==0{print " "$2}' ● $ sort -m file1 file2 | awk 'NR%2==1{printf $0}NR %2==0{print " "$2}' | awk '{print $1,$3,$2}' ● join file1 file2 ● Tukubai – $ loopj num=1 file1 file2 – $ join1 key=1 file1 file2 – $ up3 key=1 file1 file2 | yarr num=1 2012年12月8日 USP友の会勉強会 30
  • 31. まとめ ● お疲れさまでした!! ● 2月あたりにまたやりますよ。 ● さあ、飲みにいきましょう。 2012年12月8日 USP友の会勉強会 31