Submit Search
Upload
2012年10月27日 Hbstudy#38
•
18 likes
•
18,262 views
Ryuichi Ueda
Follow
参加者にワンライナーをゴリゴリ書いてもらいつつTukubaiのコマンドを紹介するという内容でした。
Read less
Read more
Report
Share
Report
Share
1 of 35
Download now
Download to read offline
Recommended
第34回シェル芸勉強会
第34回シェル芸勉強会
Ryuichi Ueda
コンテナ基盤であるLXC/LXDを 本番環境で運用する話
コンテナ基盤であるLXC/LXDを 本番環境で運用する話
Nobuhiro Fujita
Openv switchの使い方とか
Openv switchの使い方とか
kotto_hihihi
つぶやきGLSLとは
つぶやきGLSLとは
GearsRenard
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
モナドハンズオン前座
モナドハンズオン前座
bleis tift
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
AtCoder Inc.
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
Recommended
第34回シェル芸勉強会
第34回シェル芸勉強会
Ryuichi Ueda
コンテナ基盤であるLXC/LXDを 本番環境で運用する話
コンテナ基盤であるLXC/LXDを 本番環境で運用する話
Nobuhiro Fujita
Openv switchの使い方とか
Openv switchの使い方とか
kotto_hihihi
つぶやきGLSLとは
つぶやきGLSLとは
GearsRenard
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
モナドハンズオン前座
モナドハンズオン前座
bleis tift
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
AtCoder Inc.
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
ktaro_w
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
Hisashi HATAKEYAMA
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
Yahoo!デベロッパーネットワーク
競技プログラミングで便利な外部ツールを大量紹介
競技プログラミングで便利な外部ツールを大量紹介
xryuseix
MonotaRO LT - ESLintの仕組み
MonotaRO LT - ESLintの仕組み
株式会社MonotaRO Tech Team
よくわかるHopscotch hashing
よくわかるHopscotch hashing
Kumazaki Hiroki
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Takafumi ONAKA
XSS再入門
XSS再入門
Hiroshi Tokumaru
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
Hironori Miura
今さら聞けないXSS
今さら聞けないXSS
Sota Sugiura
systemd 再入門
systemd 再入門
Kazuhiro Nishiyama
Elasticsearch勉強会#39 LT 20201217
Elasticsearch勉強会#39 LT 20201217
Tetsuya Sodo
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法
Kazuho Oku
その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?
Narimichi Takamura
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
MySQLバックアップの基本
MySQLバックアップの基本
yoyamasaki
FlutterをRenderObjectまで理解する
FlutterをRenderObjectまで理解する
KeisukeKiriyama
安全のすゝめ
安全のすゝめ
slxmmm
Fiberの使いどころ
Fiberの使いどころ
Tomoya Kawanishi
Uspstudy20121208
Uspstudy20121208
Ryuichi Ueda
20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring
Ryuichi Ueda
More Related Content
What's hot
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
ktaro_w
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
Hisashi HATAKEYAMA
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
Yahoo!デベロッパーネットワーク
競技プログラミングで便利な外部ツールを大量紹介
競技プログラミングで便利な外部ツールを大量紹介
xryuseix
MonotaRO LT - ESLintの仕組み
MonotaRO LT - ESLintの仕組み
株式会社MonotaRO Tech Team
よくわかるHopscotch hashing
よくわかるHopscotch hashing
Kumazaki Hiroki
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Takafumi ONAKA
XSS再入門
XSS再入門
Hiroshi Tokumaru
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
Hironori Miura
今さら聞けないXSS
今さら聞けないXSS
Sota Sugiura
systemd 再入門
systemd 再入門
Kazuhiro Nishiyama
Elasticsearch勉強会#39 LT 20201217
Elasticsearch勉強会#39 LT 20201217
Tetsuya Sodo
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法
Kazuho Oku
その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?
Narimichi Takamura
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
MySQLバックアップの基本
MySQLバックアップの基本
yoyamasaki
FlutterをRenderObjectまで理解する
FlutterをRenderObjectまで理解する
KeisukeKiriyama
安全のすゝめ
安全のすゝめ
slxmmm
Fiberの使いどころ
Fiberの使いどころ
Tomoya Kawanishi
What's hot
(20)
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
競技プログラミングで便利な外部ツールを大量紹介
競技プログラミングで便利な外部ツールを大量紹介
MonotaRO LT - ESLintの仕組み
MonotaRO LT - ESLintの仕組み
よくわかるHopscotch hashing
よくわかるHopscotch hashing
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
XSS再入門
XSS再入門
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
今さら聞けないXSS
今さら聞けないXSS
systemd 再入門
systemd 再入門
Elasticsearch勉強会#39 LT 20201217
Elasticsearch勉強会#39 LT 20201217
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法
その ionice、ほんとに効いてますか?
その ionice、ほんとに効いてますか?
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
MySQLバックアップの基本
MySQLバックアップの基本
FlutterをRenderObjectまで理解する
FlutterをRenderObjectまで理解する
安全のすゝめ
安全のすゝめ
Fiberの使いどころ
Fiberの使いどころ
Similar to 2012年10月27日 Hbstudy#38
Uspstudy20121208
Uspstudy20121208
Ryuichi Ueda
20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring
Ryuichi Ueda
Linux女子部勉強会 2012年4月21日
Linux女子部勉強会 2012年4月21日
Ryuichi Ueda
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会
Ryuichi Ueda
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド
Ryuichi Ueda
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会
Ryuichi Ueda
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
mametter
Reading Self-descriptive FizzBuzz
Reading Self-descriptive FizzBuzz
Hiroyuki Morita
20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド
Ryuichi Ueda
OSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentation
Ryuichi Ueda
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
Ryuichi Ueda
プログラマのための文書推薦入門
プログラマのための文書推薦入門
y-uti
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
Jun Nogata
Oneliner
Oneliner
NNCT programming study group
Code iq×japanr 公開用
Code iq×japanr 公開用
Nobuaki Oshiro
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
azuma satoshi
zsh とわたし
zsh とわたし
Toshihiko Shimokawa
Maatkitの紹介
Maatkitの紹介
Akinori YOSHIDA
入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !
Nobutada Matsubara
about DakotagUI
about DakotagUI
Etsuji Nomura
Similar to 2012年10月27日 Hbstudy#38
(20)
Uspstudy20121208
Uspstudy20121208
20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring
Linux女子部勉強会 2012年4月21日
Linux女子部勉強会 2012年4月21日
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Reading Self-descriptive FizzBuzz
Reading Self-descriptive FizzBuzz
20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド
OSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentation
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
プログラマのための文書推薦入門
プログラマのための文書推薦入門
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
Oneliner
Oneliner
Code iq×japanr 公開用
Code iq×japanr 公開用
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
zsh とわたし
zsh とわたし
Maatkitの紹介
Maatkitの紹介
入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !
about DakotagUI
about DakotagUI
More from Ryuichi Ueda
第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド
Ryuichi Ueda
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノック
Ryuichi Ueda
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー
Ryuichi Ueda
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話
Ryuichi Ueda
移動ロボットのナビゲーション
移動ロボットのナビゲーション
Ryuichi Ueda
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
Ryuichi Ueda
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド
Ryuichi Ueda
bash(の変な使い方)update
bash(の変な使い方)update
Ryuichi Ueda
第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...
Ryuichi Ueda
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク
Ryuichi Ueda
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ
Ryuichi Ueda
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習
Ryuichi Ueda
ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018
Ryuichi Ueda
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018
Ryuichi Ueda
Robot frontier lesson3 2018
Robot frontier lesson3 2018
Ryuichi Ueda
Robot frontier lesson2 2018
Robot frontier lesson2 2018
Ryuichi Ueda
Robot frontier lesson1 2018
Robot frontier lesson1 2018
Ryuichi Ueda
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
Ryuichi Ueda
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
Ryuichi Ueda
More from Ryuichi Ueda
(20)
第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノック
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話
移動ロボットのナビゲーション
移動ロボットのナビゲーション
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド
bash(の変な使い方)update
bash(の変な使い方)update
第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...
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習
ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018
Robot frontier lesson3 2018
Robot frontier lesson3 2018
Robot frontier lesson2 2018
Robot frontier lesson2 2018
Robot frontier lesson1 2018
Robot frontier lesson1 2018
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
2012年10月27日 Hbstudy#38
1.
hbstudy#38 シェルスクリプト(Open usp Tukubai)で
いろいろやってみよう! USP研究所/USP友の会 上田 隆一
2.
自己紹介&近況 ●
自己紹介 – 赤いパーカーのおじさん – USP研究所スーパー平社員にしてUSP友の会の会長 ● 近況 – 連載が好評らしいです。 ● Software Design 誌 「お彼岸開眼シェルスクリプト」 – TechLION vol. 10 来てね ● 村井先生 ● 11/16(金)の夜@六本木 2012年10月27日 hbstudy#38 2
3.
今日やること
何したらおもしろい&ためになるか この一ヶ月間悩みました。 2012年10月27日 hbstudy#38 3
4.
今日やること ●
Open usp Tukubai の紹介をしようにも、 何に使うか分からなければつまらん – 道具だけ話してもね・・・ – バットの使い方の説明をして野球をしないようなもの 2012年10月27日 hbstudy#38 4
5.
今日やること ●
「GUIに慣れてしまった現代人に 足りないのはシェル芸だ!」 → シェル芸人育成ドリルをやります ● (ついでにopen usp tukubaiもやる。便利だから) 2012年10月27日 hbstudy#38 5
6.
シェル芸とは? ●
こんなことはないですか? – よくある風景A ● 上司S: 「ん?このマシンなんか設定おかしくない?」 ● 部下M: (hogehoge.confをlessして・・・) 「うわー、この設定ファイル100万行あるから、 あと5時間くらい待ってください。」 – よくある風景B ● 上司S:「このディレクトリに100万個ファイルがある。 このうちファイル名にaの付くものだけをこっちの ディレクトリに移しなさいっ。」 ● 部下M:「はい!マウスで・・・」 2012年10月27日 hbstudy#38 6
7.
シェル芸とは? ●
マウスも使わず、 プログラムも書かず、 GUIツールを立ち上げる間もなく、 あらゆる調査・計算・ファイル処理を コマンド入力一撃で終わらす。 ※シェル芸人イメージ (麻雀は天和で終わらす) 2012年10月27日 hbstudy#38 7
8.
ということで ●
端末操作だけでいろんな仕事を できるようになってもらいます。 – シェルスクリプトなぞ大規模エンタープライス用 – 今回の内容をおさえればクソ長いシェルスクリプトは 書かなくなることでしょう・・・ – 今回はエディタすら使用禁止 2012年10月27日 hbstudy#38 8
9.
時間割 ●
前半戦(~19:30) – 普通のコマンドで端末と格闘 – 桜井章一氏等の言うところの「ヒラッコ」 ● 休憩と準備(19:30~19:50) – open usp Tukubai インストール ● 後半戦(~21:20) – open usp Tukubaiも使って端末と格闘 – 桜井章一氏等の言うところの「裏技」 2012年10月27日 hbstudy#38 9
10.
進め方(どうせバイニン玄人が潜んでいるので・・・) ●
カップリングペアリングします。 ● ペア(3人グループも可)作ってください – UNIX系OSでCUI歴が長い人 × そうでもない人 ● とにかくみんなで問題を解いていきます。 – なるべく多くの人が解けるまで待ちます。 – 問題がすぐ解けてしまったら、 部屋を回って他の方の指導をお願いします。 2012年10月27日 hbstudy#38 10
11.
問題の解き方 ●
基本はbashかshで ● 使えるコマンドはなんでも使え – posixとか気にするのはできるようになってから! ● できる人はいろいろな方法で挑戦 – それも終わったら他の人を指導 – 玄人勢の献身がこの勉強会を成功させます! 2012年10月27日 hbstudy#38 11
12.
問題1: ユーザの抽出(初級) ●
/etc/passwd から、ユーザ名を抽出したリストを 作ってください – 使いそうなコマンド: awk, sed, tr, cut, ... 2012年10月27日 hbstudy#38 12
13.
問題1: 答え ●
$ awk -F: '{print $1}' /etc/passwd > ans.1 ● $ sed 's/:..*//' /etc/passwd > ans.2 ● $ cut -d: -f1 /etc/passwd > ans.3 ● $ tr ':' ' ' < /etc/passwd | awk '{print $1}' > ans.4 ● $ awk '{sub(/:..*/,"",$0);print}' /etc/passwd > ans.5 ● $ perl -F: -lane 'print $F[0]' /etc/passwd > ans.6 ● $ ruby -F: -ne 'puts $_.split[0]' /etc/passwd > ans.7 2012年10月27日 hbstudy#38 13
14.
問題2: ユーザの抽出2(中級) ●
/etc/passwd から、次を調べてください。 – ログインシェルがbashのユーザとshのユーザ、 どちらが多い? ● cut, awk, sort, uniq, grep, ... 一目見て分かれば出力はなんでもよいです。 2012年10月27日 hbstudy#38 14
15.
答え ●
$ cut -d: -f7 /etc/passwd | grep -E '/(ba)?sh$' | sort | uniq -c > ans.1 ● $ sed 's;^..*/;;' /etc/passwd | awk '/^bash$|^sh$/' | sort | uniq -c > ans.2 ● $ awk -F/ '$NF=="sh"||$NF=="bash"{print $NF}' /etc/passwd | sort | uniq -c > ans.3 ● $ awk -F/ '{print $NF}' /etc/passwd | awk '/^sh$| ^bash$/' | sort | uniq -c > ans.4 2012年10月27日 hbstudy#38 15
16.
問題3: ファイルの一括変換(中級) ●
/etcの下にあるすべてのbashスクリプト (#!/bin/bashで始まるもの) について以下の操作をしてください。 – ~/hogeというディレクトリにコピー – その際、 「#!/bin/bash」を「#!/usr/local/bin/bash」 に変更 – grep, sed, ... 2012年10月27日 hbstudy#38 16
17.
答え ●
$ grep -r '#!/bin/bash' /etc 2> /dev/null | sed 's/:..*$//' | while read f ; do sed 's;#!/bin/bash;#!/usr/local/bin/bash;' $f > ~/hoge/$(basename $f) ; done 2012年10月27日 hbstudy#38 17
18.
問題4: 集計(中級) ●
左のようなファイルを作り、 右のように集計してください。 – – awk, sort, sed, uniq, ... 2012年10月27日 hbstudy#38 18
19.
答え ●
$ awk '{print int($1/10)}' ages | sort -n | uniq -c | awk '{print $2*10"~"$2*10+9,$1}' > ans.1 ● $ sed 's/.$//' ages | sed 's/^$/0/' | sort -n | uniq -c | awk '{print $2*10"~"$2*10+9,$1}' > ans.2 ● $ cat ages | sed 's/.$//' | sed 's/^$/0/' | sort -n | uniq -c | awk '{print $2*10,$2*10+9,$1}' | sed 's/ / ~/' > ans.3 2012年10月27日 hbstudy#38 19
20.
問題5: Fizz Buzz
(上級) ● 1,2,3,4,5...と数えていって・・・ – 3の倍数だったら数字の代わりに「Fizz」 – 5の倍数だったら数字の代わりに「Buzz」 – 15の倍数だったら数字の代わりに「FizzBuzz」 と言う。 ● 出力: – 1,2,Fizz,4,Buzz,...,11,Fizz,13,14,FizzBuzz,16,... – awk, sed, ... 2012年10月27日 hbstudy#38 20
21.
答え ●
素直にif文を書く – $ seq 1 100 | awk '{if($1%15==0){print "FizzBuzz"}else if($1%5==0){print "Buzz"}else if($1%3==0){print "Fizz"}else{print $1}}' | tr 'n' ',' ● 先に計算を済ませる – $ seq 1 100 | awk '{print $1,$1%3,$1%5,$1%15}' | awk '{a=$1;if($4==0){a="FizzBuzz"}else if($3==0){a="Buzz"}else if($2==0){a="Fizz"};print a}' | tr 'n' ',' ● 意地でもif文を使わない – $ seq 1 16 | awk '$1%3==0{printf "Fizz"}$1%5==0{printf "Buzz"}{print " " $1}' | awk '{print $1}' | tr 'n' ',' 2012年10月27日 hbstudy#38 21
22.
●
sedる – $ seq 1 16 | awk '{print $1,$1%3,$1%5}' | sed 's/..* 0 0$/FizzBuzz/' | sed 's/..* 0$/Buzz/' | sed 's/..* 0 ..*$/Fizz/' | awk '{print $1}' | tr 'n' ',' ● 三項演算子る – $ seq 1 16 | awk '{print $1%15==0?"FizzBuzz": $1%5==0?"Buzz":$1%3==0?"Fizz":$1}' | tr 'n' ',' – $ seq 1 16 | awk '{printf $1%15==0?"FizzBuzz": $1%5==0?"Buzz":$1%3==0?"Fizz":$1; printf ","}' 2012年10月27日 hbstudy#38 22
23.
休憩前に ●
Open usp Tukubai のインストールをお願いします。 ● ダウンロード方法 – $ wget --no-check-certificate https://uec.usp- lab.com/TUKUBAI/DOWNLOAD/open-usp-tukubai- 20120802.tar.bz2 ● インストール方法 – $ tar xjvf ./open-usp-tukubai-20120802.tar.bz2 – (rootになって、open-usp-tukubai-20120802に移動) – # make install ● 端末で join0 と打って、usageが出てきたらインストール完了 2012年10月27日 hbstudy#38 23
24.
後半戦 ●
open usp Tukubai の得意な処理 2012年10月27日 hbstudy#38 24
25.
問題6: 日付の計算 (中級) ●
1978年2月16日は、 2012年10月27日の何日前でしょう? – echo, date, tr, awk, ... – mdate (オンラインマニュアル参照のこと) 2012年10月27日 hbstudy#38 25
26.
答え ●
Tukubai 未使用 – $ echo 19780216 20121027 | tr ' ' 'n' | date +%s -f - | tr 'n' ' ' | awk '{print $1-$2}' | awk '{print $1/(24*60*60)}' -12672 ● Tukubai 使用 – $ mdate 19780216 20121027 -12672 ということで12672日前でした。 2012年10月27日 hbstudy#38 26
27.
問題7: リストにないものを探す(中級) ●
まず以下のように、1から10の数字が書いてあり、 そのうちの一つの数が欠けているファイルを作りましょう。 ● 欠けた数字を端末に表示してください。(diff, 目grep禁止) – sort, uniq, awk, join0,... 2012年10月27日 hbstudy#38 27
28.
答え ●
Tukubaiなし – $ seq 1 10 | sort - nums | uniq -u – $ sort nums <(seq 1 10) | uniq -u (邪道) – $ cat nums | awk '{a+=$1}END{print 55-a}' ● Tukubai的正攻法 – $ seq 1 10 | sort > tran – $ sort nums | join0 +ng key=1 - tran > /dev/null 2012年10月27日 hbstudy#38 28
29.
問題8: CPU使用率(上級) ●
topの出力から、どのユーザが何%CPUを 使用しているか集計してください。 ● top 出力のファイルへの渡し方 – $ top -b -n 1 | command ... – tail, awk, sort, sm2, self, ... – ※psから計算したほうがよかったと、後から気づく 2012年10月27日 hbstudy#38 29
30.
答え ●
Tukubai なし – $ top -b -n 1 | tail -n +8 | awk '{print $2,$9}' | sort | awk '{if($1==u){c+=$2}else{print u,c;u=$1;c=$2}}END{print u,c}' | sort -k2,2nr ※連想配列を使うともっと簡単です。 ● Tukubai あり – $ top -b -n 1 | awk 'NF==10' | tail -n +2 | self 2 9 | sort | sm2 1 1 2 2 | sort -k2,2nr (Tukubaiを覚えないと、端末で済ませる発想にならないかも・・・) 2012年10月27日 hbstudy#38 30
31.
問題9: 横に並んだ数字のソート(上級) ●
次のように、適当に数字が記入されたファイルを 作ってください。 ● 各行ごとに、数字を小さい順にソートしてください。 – awk, sort, tr, juni, tarr, yarr, delf, ... 2012年10月27日 hbstudy#38 31
32.
答え ●
Tukubai なし – $ cat -n file | awk '{for(i=2;i<=NF;i++){print $1,$i}}' | sort -k1,1n -k2,2n | awk '{if($1!=a) {a=$1;printf "n"};print $2}' | tr 'n' ' ' | tr 'n' 'n' | awk 'NF!=0' ● Tukubai あり – $ juni file | tarr num=1 | sort -k1,1n -k2,2n | yarr num=1 | delf 1 2012年10月27日 hbstudy#38 32
33.
問題10: 対戦表を作る(上級) ●
左のようなファイルを作って、 右のようなcsv形式の表を作ってください。 – tac, awk, sed, tr, loopx, map, ... 2012年10月27日 hbstudy#38 33
34.
答え ●
Tukubai なし – $ cat teams | awk '{a=a " "$1;print $1}END{print a}' | tac | awk 'NR==1{print "_",$0;num=NF} {printf $1;for(i=1;i<=num;i++){printf ","};print ""}' | sed 's/ */,/g' | tr -d '_' > ans.1 ● Tukubai あり – $ loopx teams teams | awk '{print $0,"_"}' | map num=1 | tr ' ' ',' | tr -d '*_' > ans.2 2012年10月27日 hbstudy#38 34
35.
まとめ ●
お疲れさまでした!! ● このままシェル芸人の道を邁進するには? – manと格闘 – USP友の会入会入信 2012年10月27日 hbstudy#38 35
Download now