SlideShare a Scribd company logo
1 of 26
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 1 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
jus 勉強会
シェルスクリプトワークショップ
初心者向け「シェル芸」
日本 GNU AWK ユーザー会
斉藤 博文
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 2 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
はじめに
自己紹介
 「日本 GNU AWK ユーザー会」会長
 http://gauc.no-ip.org/awk-users-jp/
 hi_saito@yk.rim.or.jp
 @hi_saito
 USP Magazine, Codezine に連載中
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 3 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
2 日間、よろしくお願いします
勉強会で重要なこと
 質問しよう
 積極的に質問をしてください
 振り返ろう
 手を動かして実際に試そう
 大したことないことを分かろう
 自分もいつかは講師をしよう
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 4 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
特に難しいことは話しません
他の講義とダブる?
 それは基本だからです
 それは重要だからです
 それは間違えやすいからです
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 5 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
単に整合が取れていない言い訳かもしれません
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 6 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
シェルスクリプト
我が家での活用例
 コンテンツ Proxy サーバー
 いわゆる広告削除
 サーバー異常の iPhone へのプッシュ通知
 curl で簡単に通知できます
 年賀状、喪中ハガキ印刷
 下手な印刷ソフトよりも便利です
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 7 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
シェルでほとんどのことができます
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 8 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
シェル芸
シェル芸とは?
 シェル芸とは、現代においてもっとも過激と
目される CLI ワンライナー原理主義の一派。
武田久美子を教祖とし、夏になると信者は女
も男も老いも若きも貝がらビキニで海辺を
ホーミタイする危険な思想である。
 アンサイクロペディア
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 9 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
ネタが古くて 30 代後半でないと分からない上、違います!
シェル芸とは?
 マウスも使わず、ソースコードも残さず、GUI
ツールを立ち上げる間もなく、あらゆる調
査・計算・テキスト処理を CLI 端末へのコマ
ンド入力一撃で終わらすこと。
 シェル芸の定義バージョン 1.0
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 10 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
「USP 友の会」の上田会長の定義です
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 11 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
今回のテーマ
基礎を学ぶ
 基礎を学びます
 いかにパイプで処理を行うか
 ちょっと変わったコマンドの使い方
 grep, xargs など
 Map Reduce のようなもの
 集計の基礎を行います
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 12 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
今までのシェル芸勉強会よりも簡単です
重要なこと
 できなくても構いません
 得意、不得意があります
 答えが違っても構いません
 TIMTOWTDI の精神でやりましょう
 手を動かしてください
 頭ではなく手を動かしてください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 13 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
頭もフル活用してください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 14 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
問題 (5 問あります)
問題 1
 1 から 100 までを足してください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 15 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
解答例 1
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 16 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ seq 1 100 | xargs | tr ' ' '+' | bc
$ seq 1 100 | xargs | sed 's:[ ]:+:g' | bc
$ seq 1 100 | awk '{v+=$0}END{print v}'
List: 解答例 1
 xargs コマンドの使い方を知ろう
 sed の区切りは "/" ではなく、":" が便利
Demo
問題 2
 「とうきょうとっきょきょかきょくきょか
きょくちょう」の「きょ」の文字を数えてく
ださい
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 17 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
解答例 2
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 18 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ echo 'とうきょうとっきょきょかきょくきょかきょくちょう' |
grep -o 'きょ' |
wc -l
$ echo 'とうきょうとっきょきょかきょくきょかきょくちょう' |
awk '{print gsub(/きょ/, "")}'
List: 解答例 2
 grep の -o オプションは便利
Demo
問題 3
 「とうきょうとっきょきょかきょくきょか
きょくちょう」の各文字を数えてください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 19 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
解答例 3
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 20 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ echo -n 'とうきょうとっきょきょかきょくきょかきょくちょう' |
sed 's:.:&n:g' |
sort | uniq -c | sort -nr
$ echo 'とうきょうとっきょきょかきょくきょかきょくちょう' |
sed 's:.:&n:g' |
awk 'NF' |
sort | uniq -c | sort -nr
List: 解答例 3
 "sort | uniq -c | sort -n" は慣用句
 空行削除は AWK で
Demo
問題 4
 「1 2 3 4 5 6 7 8 9 10」を 2 文字づつフリップ
してください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 21 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
解答例 4
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 22 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ seq 1 10 |
xargs |
xargs -n 2 |
awk '{print $2, $1}' |
xargs
List: 解答例 4
 それぞれの xargs の挙動をみてみよう
Demo
問題 5
 1 から 100 までを FizzBuzz してください
 3 の倍数の時に Fizz、5 の倍数の時に Buzz
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 23 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
解答例 5
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 24 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ seq 1 100 |
awk '{print $0%15?$0%5?$0%3?$0:"Fizz":"Buzz":"FizzBuzz"}'
List: 解答例 5
 これはいろいろな方法があると思います
Demo
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 25 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
質問はありますか?
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 26 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
ご清聴ありがとうございました

More Related Content

Viewers also liked

仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプトbsdhack
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028博文 斉藤
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極めるbsdhack
 
文書作成だけじゃない!会津若松市のDraw活用
文書作成だけじゃない!会津若松市のDraw活用文書作成だけじゃない!会津若松市のDraw活用
文書作成だけじゃない!会津若松市のDraw活用Jun Meguro
 
「形式を指定して貼り付け」を使いこなそう!
「形式を指定して貼り付け」を使いこなそう!「形式を指定して貼り付け」を使いこなそう!
「形式を指定して貼り付け」を使いこなそう!Jun Meguro
 
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用Jun Meguro
 
20150717 gisca 自治体によるopenstreetmapの活用について
20150717 gisca 自治体によるopenstreetmapの活用について20150717 gisca 自治体によるopenstreetmapの活用について
20150717 gisca 自治体によるopenstreetmapの活用について和仁 浅野
 
気づきとサービスデザインワークショップ
気づきとサービスデザインワークショップ気づきとサービスデザインワークショップ
気づきとサービスデザインワークショップMasaya Ando
 
弾幕の科学――モデル化、生成、ランク、おもてなし
弾幕の科学――モデル化、生成、ランク、おもてなし弾幕の科学――モデル化、生成、ランク、おもてなし
弾幕の科学――モデル化、生成、ランク、おもてなしIGDA Japan
 
Josmで写真にジオタグを埋めるマニュアル
Josmで写真にジオタグを埋めるマニュアルJosmで写真にジオタグを埋めるマニュアル
Josmで写真にジオタグを埋めるマニュアルJun Meguro
 
東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイ東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイIGDA Japan
 
OpenStreetMapのご紹介とオープンデータとの関わり
OpenStreetMapのご紹介とオープンデータとの関わりOpenStreetMapのご紹介とオープンデータとの関わり
OpenStreetMapのご紹介とオープンデータとの関わりShu Higashi
 
ワークショップとUX ――なぜ今ワークショップが重要なのか
ワークショップとUX ――なぜ今ワークショップが重要なのかワークショップとUX ――なぜ今ワークショップが重要なのか
ワークショップとUX ――なぜ今ワークショップが重要なのかHitomi Yamagishi
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンスNozomi Ito
 
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティスコンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、ReactのベストプラクティスとバッドプラクティスKohei Asai
 
本日の怪物曲線 2016/6/18
本日の怪物曲線 2016/6/18本日の怪物曲線 2016/6/18
本日の怪物曲線 2016/6/18Hexomino Hexomino
 

Viewers also liked (20)

仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極める
 
awk入門
awk入門awk入門
awk入門
 
Awk勉強会用資料
Awk勉強会用資料Awk勉強会用資料
Awk勉強会用資料
 
文書作成だけじゃない!会津若松市のDraw活用
文書作成だけじゃない!会津若松市のDraw活用文書作成だけじゃない!会津若松市のDraw活用
文書作成だけじゃない!会津若松市のDraw活用
 
「形式を指定して貼り付け」を使いこなそう!
「形式を指定して貼り付け」を使いこなそう!「形式を指定して貼り付け」を使いこなそう!
「形式を指定して貼り付け」を使いこなそう!
 
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用
 
20150717 gisca 自治体によるopenstreetmapの活用について
20150717 gisca 自治体によるopenstreetmapの活用について20150717 gisca 自治体によるopenstreetmapの活用について
20150717 gisca 自治体によるopenstreetmapの活用について
 
気づきとサービスデザインワークショップ
気づきとサービスデザインワークショップ気づきとサービスデザインワークショップ
気づきとサービスデザインワークショップ
 
ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14
 
弾幕の科学――モデル化、生成、ランク、おもてなし
弾幕の科学――モデル化、生成、ランク、おもてなし弾幕の科学――モデル化、生成、ランク、おもてなし
弾幕の科学――モデル化、生成、ランク、おもてなし
 
Josmで写真にジオタグを埋めるマニュアル
Josmで写真にジオタグを埋めるマニュアルJosmで写真にジオタグを埋めるマニュアル
Josmで写真にジオタグを埋めるマニュアル
 
東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイ東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイ
 
OpenStreetMapのご紹介とオープンデータとの関わり
OpenStreetMapのご紹介とオープンデータとの関わりOpenStreetMapのご紹介とオープンデータとの関わり
OpenStreetMapのご紹介とオープンデータとの関わり
 
ワークショップとUX ――なぜ今ワークショップが重要なのか
ワークショップとUX ――なぜ今ワークショップが重要なのかワークショップとUX ――なぜ今ワークショップが重要なのか
ワークショップとUX ――なぜ今ワークショップが重要なのか
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
 
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティスコンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
 
本日の怪物曲線 2016/6/18
本日の怪物曲線 2016/6/18本日の怪物曲線 2016/6/18
本日の怪物曲線 2016/6/18
 

Similar to シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」

日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall博文 斉藤
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4hirokiky
 
おれが考えた見やすい通知
おれが考えた見やすい通知おれが考えた見やすい通知
おれが考えた見やすい通知Yoshiyuki MIKAMI
 
20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライドRyuichi Ueda
 
Hardware Sketching Workshop 2013
Hardware Sketching Workshop 2013Hardware Sketching Workshop 2013
Hardware Sketching Workshop 2013Shigeru Kobayashi
 
はてなのサービスの開発環境
はてなのサービスの開発環境はてなのサービスの開発環境
はてなのサービスの開発環境ast_j
 
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成Tomoki Oyamatsu
 
YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活azumakuniyuki 🐈
 
3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScript3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScriptNISHIMOTO Keisuke
 
java-java-bpstudy-connpass
java-java-bpstudy-connpassjava-java-bpstudy-connpass
java-java-bpstudy-connpassHaruo Sato
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2Kenichiro MATOHARA
 
20130714 eucalyptus habuka036
20130714 eucalyptus habuka03620130714 eucalyptus habuka036
20130714 eucalyptus habuka036Osamu Habuka
 
ReVIEWとLibreOfficeとOMakeで本を書きましょう!
ReVIEWとLibreOfficeとOMakeで本を書きましょう!ReVIEWとLibreOfficeとOMakeで本を書きましょう!
ReVIEWとLibreOfficeとOMakeで本を書きましょう!Kiwamu Okabe
 
JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013
JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013
JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013OSSラボ株式会社
 
Casual convergence
Casual convergenceCasual convergence
Casual convergenceazukiwasher
 
「Drupal Camp in Tokyoやりまーす!」 at PHP Conference 2014 Tokyo
「Drupal Camp in Tokyoやりまーす!」 at PHP Conference 2014 Tokyo「Drupal Camp in Tokyoやりまーす!」 at PHP Conference 2014 Tokyo
「Drupal Camp in Tokyoやりまーす!」 at PHP Conference 2014 Tokyo惠 紀野
 
Lambda(Python)のデプロイについて考えたというか作った
Lambda(Python)のデプロイについて考えたというか作ったLambda(Python)のデプロイについて考えたというか作った
Lambda(Python)のデプロイについて考えたというか作ったTerui Masashi
 
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜Jun Nogata
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 

Similar to シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」 (20)

日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4
 
おれが考えた見やすい通知
おれが考えた見やすい通知おれが考えた見やすい通知
おれが考えた見やすい通知
 
20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド
 
Hardware Sketching Workshop 2013
Hardware Sketching Workshop 2013Hardware Sketching Workshop 2013
Hardware Sketching Workshop 2013
 
はてなのサービスの開発環境
はてなのサービスの開発環境はてなのサービスの開発環境
はてなのサービスの開発環境
 
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
 
YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活
 
3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScript3D Photo Tool by Ruby/Sinatra + JavaScript
3D Photo Tool by Ruby/Sinatra + JavaScript
 
java-java-bpstudy-connpass
java-java-bpstudy-connpassjava-java-bpstudy-connpass
java-java-bpstudy-connpass
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
 
20130714 eucalyptus habuka036
20130714 eucalyptus habuka03620130714 eucalyptus habuka036
20130714 eucalyptus habuka036
 
ReVIEWとLibreOfficeとOMakeで本を書きましょう!
ReVIEWとLibreOfficeとOMakeで本を書きましょう!ReVIEWとLibreOfficeとOMakeで本を書きましょう!
ReVIEWとLibreOfficeとOMakeで本を書きましょう!
 
JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013
JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013
JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013
 
Casual convergence
Casual convergenceCasual convergence
Casual convergence
 
「Drupal Camp in Tokyoやりまーす!」 at PHP Conference 2014 Tokyo
「Drupal Camp in Tokyoやりまーす!」 at PHP Conference 2014 Tokyo「Drupal Camp in Tokyoやりまーす!」 at PHP Conference 2014 Tokyo
「Drupal Camp in Tokyoやりまーす!」 at PHP Conference 2014 Tokyo
 
Lambda(Python)のデプロイについて考えたというか作った
Lambda(Python)のデプロイについて考えたというか作ったLambda(Python)のデプロイについて考えたというか作った
Lambda(Python)のデプロイについて考えたというか作った
 
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
 
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 

More from 博文 斉藤

Obsidian Talk JP 資料 - 2021-10-15
Obsidian Talk JP 資料 - 2021-10-15Obsidian Talk JP 資料 - 2021-10-15
Obsidian Talk JP 資料 - 2021-10-15博文 斉藤
 
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04博文 斉藤
 
Markdown で行こう!
Markdown で行こう!Markdown で行こう!
Markdown で行こう!博文 斉藤
 
Shell で制限付き並列処理をしよう
Shell で制限付き並列処理をしようShell で制限付き並列処理をしよう
Shell で制限付き並列処理をしよう博文 斉藤
 
curl で iPhone にプッシュ通知しよう
curl で iPhone にプッシュ通知しようcurl で iPhone にプッシュ通知しよう
curl で iPhone にプッシュ通知しよう博文 斉藤
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413博文 斉藤
 
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall博文 斉藤
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall博文 斉藤
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理博文 斉藤
 

More from 博文 斉藤 (9)

Obsidian Talk JP 資料 - 2021-10-15
Obsidian Talk JP 資料 - 2021-10-15Obsidian Talk JP 資料 - 2021-10-15
Obsidian Talk JP 資料 - 2021-10-15
 
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 Obsidian Talk JP - Template & Daily notes - 2021-09-04
 
Markdown で行こう!
Markdown で行こう!Markdown で行こう!
Markdown で行こう!
 
Shell で制限付き並列処理をしよう
Shell で制限付き並列処理をしようShell で制限付き並列処理をしよう
Shell で制限付き並列処理をしよう
 
curl で iPhone にプッシュ通知しよう
curl で iPhone にプッシュ通知しようcurl で iPhone にプッシュ通知しよう
curl で iPhone にプッシュ通知しよう
 
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
 
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理
 

シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」

  • 1. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 1 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 jus 勉強会 シェルスクリプトワークショップ 初心者向け「シェル芸」 日本 GNU AWK ユーザー会 斉藤 博文
  • 2. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 2 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 はじめに
  • 3. 自己紹介  「日本 GNU AWK ユーザー会」会長  http://gauc.no-ip.org/awk-users-jp/  hi_saito@yk.rim.or.jp  @hi_saito  USP Magazine, Codezine に連載中 http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 3 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 2 日間、よろしくお願いします
  • 4. 勉強会で重要なこと  質問しよう  積極的に質問をしてください  振り返ろう  手を動かして実際に試そう  大したことないことを分かろう  自分もいつかは講師をしよう http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 4 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 特に難しいことは話しません
  • 5. 他の講義とダブる?  それは基本だからです  それは重要だからです  それは間違えやすいからです http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 5 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 単に整合が取れていない言い訳かもしれません
  • 6. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 6 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 シェルスクリプト
  • 7. 我が家での活用例  コンテンツ Proxy サーバー  いわゆる広告削除  サーバー異常の iPhone へのプッシュ通知  curl で簡単に通知できます  年賀状、喪中ハガキ印刷  下手な印刷ソフトよりも便利です http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 7 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 シェルでほとんどのことができます
  • 8. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 8 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 シェル芸
  • 9. シェル芸とは?  シェル芸とは、現代においてもっとも過激と 目される CLI ワンライナー原理主義の一派。 武田久美子を教祖とし、夏になると信者は女 も男も老いも若きも貝がらビキニで海辺を ホーミタイする危険な思想である。  アンサイクロペディア http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 9 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 ネタが古くて 30 代後半でないと分からない上、違います!
  • 10. シェル芸とは?  マウスも使わず、ソースコードも残さず、GUI ツールを立ち上げる間もなく、あらゆる調 査・計算・テキスト処理を CLI 端末へのコマ ンド入力一撃で終わらすこと。  シェル芸の定義バージョン 1.0 http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 10 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 「USP 友の会」の上田会長の定義です
  • 11. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 11 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 今回のテーマ
  • 12. 基礎を学ぶ  基礎を学びます  いかにパイプで処理を行うか  ちょっと変わったコマンドの使い方  grep, xargs など  Map Reduce のようなもの  集計の基礎を行います http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 12 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 今までのシェル芸勉強会よりも簡単です
  • 13. 重要なこと  できなくても構いません  得意、不得意があります  答えが違っても構いません  TIMTOWTDI の精神でやりましょう  手を動かしてください  頭ではなく手を動かしてください http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 13 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 頭もフル活用してください
  • 14. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 14 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 問題 (5 問あります)
  • 15. 問題 1  1 から 100 までを足してください http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 15 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学
  • 16. 解答例 1 http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 16 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 $ seq 1 100 | xargs | tr ' ' '+' | bc $ seq 1 100 | xargs | sed 's:[ ]:+:g' | bc $ seq 1 100 | awk '{v+=$0}END{print v}' List: 解答例 1  xargs コマンドの使い方を知ろう  sed の区切りは "/" ではなく、":" が便利 Demo
  • 17. 問題 2  「とうきょうとっきょきょかきょくきょか きょくちょう」の「きょ」の文字を数えてく ださい http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 17 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学
  • 18. 解答例 2 http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 18 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 $ echo 'とうきょうとっきょきょかきょくきょかきょくちょう' | grep -o 'きょ' | wc -l $ echo 'とうきょうとっきょきょかきょくきょかきょくちょう' | awk '{print gsub(/きょ/, "")}' List: 解答例 2  grep の -o オプションは便利 Demo
  • 19. 問題 3  「とうきょうとっきょきょかきょくきょか きょくちょう」の各文字を数えてください http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 19 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学
  • 20. 解答例 3 http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 20 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 $ echo -n 'とうきょうとっきょきょかきょくきょかきょくちょう' | sed 's:.:&n:g' | sort | uniq -c | sort -nr $ echo 'とうきょうとっきょきょかきょくきょかきょくちょう' | sed 's:.:&n:g' | awk 'NF' | sort | uniq -c | sort -nr List: 解答例 3  "sort | uniq -c | sort -n" は慣用句  空行削除は AWK で Demo
  • 21. 問題 4  「1 2 3 4 5 6 7 8 9 10」を 2 文字づつフリップ してください http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 21 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学
  • 22. 解答例 4 http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 22 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 $ seq 1 10 | xargs | xargs -n 2 | awk '{print $2, $1}' | xargs List: 解答例 4  それぞれの xargs の挙動をみてみよう Demo
  • 23. 問題 5  1 から 100 までを FizzBuzz してください  3 の倍数の時に Fizz、5 の倍数の時に Buzz http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 23 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学
  • 24. 解答例 5 http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 24 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 $ seq 1 100 | awk '{print $0%15?$0%5?$0%3?$0:"Fizz":"Buzz":"FizzBuzz"}' List: 解答例 5  これはいろいろな方法があると思います Demo
  • 25. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 25 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 質問はありますか?
  • 26. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 26 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 ご清聴ありがとうございました