SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
シェル芸勉強会へ
ようこそ
usp友の会 田代勝也
まずは御礼
ご参加いただき
誠に
ありがとうございます
テキスト処理の重要性
• 各種テキストファイル
• データファイル
HTML、JSON、RDF
• 設定ファイル
• ログファイル
• プログラムコード 
C、Java、Ruby
• 各種命令の文字列
• コマンド実行
• SQL文
• HTTP、SMTP
テキスト処理の重要性
情報処理に
テキスト処理は
欠かせない!
テキスト処理に強くなろう
• テキストデータの整理
• ログデータの整理とか
• データからSQL文作ってデータぶち込む
• テストデータ入れたいとか
• プログラムコードの一括変換
• 型を変えたいとか 、関数名変えたいとか
シェル芸で出来ると便利!
テキストエディタ何使う?
Vidual Studio、Eclipse
SublimeText、Atom
秀丸、サクラエディタ、TeraPad
Emacs、Vim
IDEエディタ論争!?
テキストエディタ何使う?
だが心配ない!
だって
テキストエディタ
使わない!
シェル芸のイメージ
一般的?なイメージ
コワイ!
メラしか使えないのに
ベギラゴンが飛び交ってる
シェル芸のイメージ
• いきなり長いワンライナ書いてない
• 出力を確認しながら少しずつ
• 慣れてないから難しく見える
訓練することで誰でも!
manにもシェル芸が
FreeBSDのlddコマンドマニュアルにシェル芸
https://www.freebsd.org/cgi/man.cgi?query=ldd
ワンライナーは
何も特別なことじゃない!
そのままだと問題があるので修正版がこちら
$ find /usr/bin -type f | xargs -n1 file -F' ' |
grep ELF | cut -f1 -d ' ' | xargs ldd -f '%A %on'
| grep libc.so.7
スクリプト言語としてのシェル
• 変数
• スカラ、配列
• 制御構造
• if、for、while
• 関数
• 定義、スコープ
• データを変数に持たせる
• 制御構造で処理する
• 関数で処理の共通化
これらは苦手で遅い
スクリプト組む時・・
スクリプト言語としてのシェル
手続き型な言語としては
正直イケてない・・・
しかし!
パイプを使った
ストリーム処理が得意
パイプの利点
• 簡単な問題に分解
• コードの簡素化
• バグの軽減につながる
• 並列処理
• マルチコアの場合自動的に並列化
• 禁断の界王拳2倍超え(CPU300%とか)
• メモリ使用量
• sortされたデータなら大幅に軽減可
モダンな
プログラミング
に対して
利点も
シェルプログラミングの考え方
• データはファイルに持たせる
• ファイル読み書きは得意(リダイレクト)
• フィルタとして処理
• パイプでのストリーム処理 (関数型の考え方)
• 並列処理の活用
• シェルのパイプやバックグラウンド機能
コマンドを知る
•テキスト処理系
•単機能
•cat、grep、sort、uniq、
tail、head、tr、paste、
diff、comm
•多機能
•sed
•ファイル操作系
•ls、find
•シーケンス生成
•seq、jot
•その他
•xargs、time、tee、echo、
printf、bc、curl
•最終兵器
•awk
•perl、ruby (-alne)
Open usp Tukubaiの紹介
• ユニケージ開発手法で利用されるコマンド群
• よく使われるコマンドをオープンソースで公開
• 端末が有用な道具になる
• シェル芸にも強い味方
何が嬉しいのか?
Open usp Tukubaiの紹介
• スペース区切りのデータが前提
• フィールド数は固定
• 固定数じゃなくていい場合も
• 処理速度は遅い
• Pythonで実装(より高速なHaskell版やShell版も)
• 商用版は超高速(C言語)
Open usp Tukubaiの紹介
•日付時刻処理
•mdate、calclock、yobi
•各種集計
•gyo、count、sm2、map
•フィールド切出
•self、delf
Open usp Tukubaiコマンドマニュアル
https://uec.usp-lab.com/TUKUBAI_MAN/CGI/TUKUBAI_MAN.CGI?POMPA=LIST
•行列変換
•tarr、yarr、tateyoko
•データ結合
•loopj、loopx、join0、join1、
join2
•その他
•getfirst、getlast、juni、mojihame
古くて新しいパラダイム
• テキストデータは基本で自由
• ストリーム処理という考え方
• 並列処理で高速化も
改めてUNIXの基本に
たち返ろう!
シェル芸情報
• USP友の会
• https://www.usptomo.com
• UEC - use engineers'
community site
• https://uec.usp-lab.com/
INFO/CGI/INFO.CGI?
POMPA=LIST
• 上田ブログ(会長)
• https://blog.ueda.asia
• 大チェッカー:シェル芸
人たち
• https://daichkr.hatelabo.jp/
antenna/960679194075891200
• 稚拙ブログ
• http://papiro.hatenablog.jp

Contenu connexe

Similaire à シェル芸勉強会へようこそ

Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
Tomoharu ASAMI
 

Similaire à シェル芸勉強会へようこそ (20)

Pentaho ETL@DevLOVE関西
Pentaho ETL@DevLOVE関西Pentaho ETL@DevLOVE関西
Pentaho ETL@DevLOVE関西
 
Scalaで行うマイグレーション ~Flyway~
Scalaで行うマイグレーション ~Flyway~Scalaで行うマイグレーション ~Flyway~
Scalaで行うマイグレーション ~Flyway~
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
 
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
 
Yesod(at FPM2012)
Yesod(at FPM2012)Yesod(at FPM2012)
Yesod(at FPM2012)
 
2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ
 
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
 
Yesodを支える技術
Yesodを支える技術Yesodを支える技術
Yesodを支える技術
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
 
Phpcon2001 in tokyo
Phpcon2001 in tokyoPhpcon2001 in tokyo
Phpcon2001 in tokyo
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
LDA入門
LDA入門LDA入門
LDA入門
 
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだScalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
DB思い出話いろいろ(仮)
DB思い出話いろいろ(仮)DB思い出話いろいろ(仮)
DB思い出話いろいろ(仮)
 

シェル芸勉強会へようこそ