Upload
ryuichi-ueda
View
1.955
Download
2
Embed Size (px)
DESCRIPTION
コマンド漫談
Citation preview
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会
awkもいいけどTukubaiもね!Open usp Tukubaiを使おう
USP友の会 上田隆一
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 2
contents
● 0. 自己紹介● 1. USP友の会の紹介● 2. Tukubaiをシェルスクリプトで使い倒す● . 3 まとめ
7注:今回の資料は、昨年 月の第二回勉強会に訂正を入れたテイになってます。
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 3
0. 自己紹介● 2第 回Linux女子部勉強会でやらかした人(&絡まれた)
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 4
1. USP友の会● シェルスクリプト(CUI)のコミュニティー
● USP: universal shell programming● 200会員数:もうすぐ 人
● 会の綱領
● 「本物の技術・本物の人」
● 「酒は呑め呑め呑むならば(嘘)」
派手なウェブサイト
400
bashで書き直した
会社に移管
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 5
情報発信
● イベント
● 4 22 月 日(日):第七回カーネル/VM探検隊で上田講演– ・・・明日じゃねーかよ。
● 5 14月 日(月):TechLION vol.7 @ 名古屋Geek Bar– 新東名を徒歩でどうぞ。
● ネット・メディア
● Twitter @usptomo(残念な駄洒落のみ)● Facebook USP「 友の会」(イベント等の告知)
● Software Design 誌連載「開眼シェルスクリプト」
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 6
2. awkをシェルスクリプトで使い倒す● ログなどの処理に便利なコマンド
● awkをパイプでつなげてシェルスクリプトを書くと、かなりの種類の処理が可能になる。
cat <<- FIN | sed 's/awk/Tukubai/g'
FIN
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 7
Open usp Tukubai
● USP研究所の商用コマンドの一部を一般公開したもの
ビジネス版 open版
言語 C言語 Python
コーディング指針 極限までチューニング
短く読みやすく
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 8
入手方法
● GitHub● Open-usp-Tukubai で検索
● Unicage engineers' communtyサイト● UEC Tukubai で検索
● FreeBSDで使う● portsに入っています。
https://uec.usp-lab.com
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 9
とりあえず使ってみる
● こんなファイル(FILE1という名前)a 100b 20c -10.4
● コマンドを打つ(短い!)
● cat FILE1 | self 1 (cat FILE1 | awk '{print $1}')● cat FILE1 | sm2 0 0 2 2
(cat FILE1 | awk 'BEGIN{a=0}{a+=$2}END{print a}')
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 10
お題A:表計算をやってみましょう● ファイル(FILEA)
1 2 30.1 0.2 0.3 -1 -2 -3
● 横に足す
● $ cat FILEA | ysum(cat hoge | awk '{print $1,$2,$3,$1+$2+$3}')1 2 3 60.1 0.2 0.3 0.6-1 -2 -3 -6
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 11
● 書式を整える
● $ cat FILEA | ysum | keta($ cat hoge | awk '{sum=$1+$2+$3;print $0, sprintf("%010s",sum)}')
1 2 3 60.1 0.2 0.3 0.6 -1 -2 -3 -6
●
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 12
● 縦にも足してみましょう
● $ cat FILEA | ysum | self 1 1/4 | sm5 1 1 2 5 | delf 1 | keta
(cat hoge | awk '{print $0,$1+$2+$3}' | awk '{for(i=1;i<=4;i++){a[i]+=$i};print}END{print a[1],a[2],a[3],a[4]}' | awk '{for(i=1;i<=NF;i++){printf("%05s",$i)};printf("\n")}')
1 2 3 6 0.1 0.2 0.3 0.6 -1 -2 -3 -6 0.1 0.2 0.3 0.6
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 13
お題B: HTMLを作る● $ cat TEMPLATEB
<table>
<!--AA-->
<tr><td>%1</td><td>%2</td>
<td>%3</td><td>%4</td></tr>
<!--AA-->
</table>
● $ cat FILEB1 2 3 6
0.1 0.2 0.3 0.6
-1 -2 -3 -6
0.1 0.2 0.3 0.6●
$ mojihame -lAA TEMPLATE FILEB<table> <tr> <td>1</td><td>2</td> <td>3</td><td>6</td> </tr> <tr> <td>0.1</td><td>0.2</td> <td>0.3</td><td>0.6</td> </tr> <tr> <td>-1</td><td>-2</td> <td>-3</td><td>-6</td> </tr> <tr> <td>0.1</td><td>0.2</td> <td>0.3</td><td>0.6</td> </tr></table>
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 14
お題C CGI: を書く● 友の会サイトでもTukubaiが活躍(半日で作成)
● コンテンツの表示、検索、タグ機能、閲覧回数のカウント・ランキング・・・
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 15
お題D:ログを集計してみましょう
● 集計してグラフを書く!(mojihame+svg)
2012 4 21年 月 日 3 LINUX第 回 女子部勉強会 16
3.まとめ● awk等、コマンドでテキストデータと戯れる
● 地味。腹筋なみに地味
● パズルと思えばおもしろい
● 重要:とりあえずインストールして、一個だけ、使い方を覚えてください。
● 一個だけでも端末で仕事します。
● han, zen, self, keta あたりがお勧め。
Tukubaiコマンドやawk
結構、派手
慣れるとテトリスのようになる