SlideShare a Scribd company logo
1 of 32
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 日
シェルスクリプトワークショップ
@鳥取環境大学
シェル芸
シェル芸とは?
 シェル芸とは、現代においてもっとも過激と
目される CLI ワンライナー原理主義の一派。
武田久美子を教祖とし、夏になると信者は女
も男も老いも若きも貝がらビキニで海辺を
ホーミタイする危険な思想である。
 アンサイクロペディア
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 7 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
ネタが古くて 30 代後半でないと分からない上、違います!
シェル芸とは?
 マウスも使わず、ソースコードも残さず、GUI
ツールを立ち上げる間もなく、あらゆる調
査・計算・テキスト処理を CLI 端末へのコマ
ンド入力一撃で終わらすこと。
 シェル芸の定義バージョン 1.0
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 8 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
「USP 友の会」の上田会長の定義です
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 9 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
今回のテーマ
今回のテーマはファイル
 ファイルを拡張子で判断しない
 file コマンドが便利です
 ファイルのコピーや移動はどうすれば良いか
 実行前に確認できるようにする
 ファイルから必要な部分だけを抜き出す
 HTML, XML の扱いはどうすれば良いか
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 10 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
今までのシェル芸勉強会にないネタです
重要なこと
 できなくても構いません
 得意、不得意があります
 答えが違っても構いません
 TIMTOWTDI の精神でやりましょう
 手を動かしてください
 頭ではなく手を動かしてください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 11 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
頭もフル活用してください
最初に
 以下のファイルを落としてください
 http://gauc.no-ip.org/~hi_saito/jus/jus_sample.tar.gz
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 12 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
できれば、CLI でお願いします
$ mkdir jus
$ cd !$
$ wget http://gauc.no-ip.org/~hi_saito/jus/jus_sample.tar.gz
$ tar xzvf jus_sample.tar.gz
List: CLI での落とし方
問題のツリー
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 13 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
できれば、CLI でお願いします
jus_sample/
+--- all/
| +--- test_01.jpg
| +--- test_02.jpg
| +--- test_01.png
| +--- test_02.png
| +--- test_01.txt
| +--- test_02.txt
| +--- test_01.html
| +--- test_02.html
+--- images/
+--- text/
+--- thumbnail/
List: 問題のディレクトリ構造
確認してください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 14 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
問題 (6 問あります)
問題 1
 画像ファイルだけを images/ ディレクトリに
移動してください
 拡張子だけで判断しないでください
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 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find -type f |
xargs file |
grep 'image' |
awk -F':' '{print $1, $1}' |
awk '{sub(/all/, "images", $2); print $0}' |
awk '{print "mv " $0}' |
sh
List: 解答例 1
 xargs コマンドの使い方を知ろう
 file コマンドでファイル種類を判別
 確認後に最後に Shell に渡して実行
Demo
問題 2
 テキストファイルだけを text/ ディレクトリ
にコピーしてください
 拡張子だけで判断しないでください
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 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find -type f |
xargs file |
grep 'text' |
awk -F':' '{print $1, $1}' |
awk '{sub(/all/, "text", $2); print $0}' |
awk '{print "cp " $0}' |
sh
List: 解答例 2
 xargs コマンドの使い方を知ろう
 file コマンドでファイル種類を判別
 確認後に最後に Shell に渡して実行
Demo
問題 3
 画像を 32 x 32 ピクセル PNG 形式に変換して
thumbnail/ ディレクトリに作成してくださ
い
 拡張子だけで判断しないでください
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 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find images/ -type f |
awk '{print $1, $1}' |
sed 's: images: thumbnail:' |
sed 's:^:convert -geometry 32x32! :' |
sed 's:$:.png:' |
sh
List: 解答例 3
 sed の区切りは "/" ではなく、":" が便利
 確認後に最後に Shell に渡して実行
Demo
問題 4
 test_01.html, test_02.html のタイトルを
抜き出してください
 改行の有無をどうするかがポイントです
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 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find text/ -type f |
xargs file |
grep 'HTML' |
awk -F':' '{print $1}' |
xargs -n 1 cat |
tr -d 'n' |
grep -Eoi '<title>[^<]+</title>' |
sed -r 's:</?[^>]+>::g'
List: 解答例 4
 XML, HTML は一旦改行を正しく付け直す
 sed の区切りは "/" ではなく、":" が便利
Demo
問題 5
 test_01.html, test_02.html の HTML タ
グを削除してください
 改行の有無をどうするかがポイントです
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 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find text/ -type f |
xargs file |
grep 'HTML' |
awk -F':' '{print $1}' |
xargs sed -r 's:</?[^>]+>::g' |
awk 'NF'
List: 解答例 5
 sed での最小一致を学ぼう
 sed の区切りは "/" ではなく、":" が便利
 余計な改行は AWK で削除
Demo
問題 6
 できあがった階層構造をツリー表示してくだ
さい
 tree コマンドは使用禁止です
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 25 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
解答例 6
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 26 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find |
sort |
tr '/' ' ' |
sed -r 's:[^ ]+[ ]: +--- :g' |
sed -r 's:--- : :g' |
sed -r 's:[ ]+[ ]: | :g'
List: 解答例 6
 sed は GNU 拡張が便利
Demo
問題 X
 以下の住所を横書きで TTF 化してください
 鳥取県鳥取市,若葉台北1-1-1,鳥取環境大学
 いわゆる宛名書きです
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 27 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
解答例 X
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 28 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ echo '鳥取県鳥取市,若葉台北1-1-1,鳥取環境 大学' |
sed 's:$:様:' |
tr ',' 'n' |
convert -pointsize 40 -font aoyagikouzanfont2.ttf 
label:@- jusyo.png
List: 解答例 X
 覚える必要はありません。
Demo
問題 XX
 以下の住所を縦書きで TTF 化してください
 鳥取県鳥取市,若葉台北1-1-1,鳥取環境大学
 いわゆる宛名書きです
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 29 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
解答例 XX
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 30 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ echo '鳥取県鳥取市,若葉台北1-1-1,鳥取環境 大学' |
sed 's:$:様:' |
tr ',' 'n' |
tac |
xargs -n1 -I% sh -c ' 
echo "%" |
grep -o '.' |
convert -pointsize 40 -font sazanami-mincho.ttf 
label:@- miff:-' 
|
convert - +append jusyo.png
List: 解答例 XX
 覚える必要はありません。
Demo
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 31 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
質問はありますか?
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 32 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
ご清聴ありがとうございました

More Related Content

What's hot

GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)lestrrat
 
HiRoshimaR6_ExplodingBoxplot
HiRoshimaR6_ExplodingBoxplotHiRoshimaR6_ExplodingBoxplot
HiRoshimaR6_ExplodingBoxplotSAKAUE, Tatsuya
 
ocamloptの全体像
ocamloptの全体像ocamloptの全体像
ocamloptの全体像Kiwamu Okabe
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springTakuya Ueda
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoShoot Morii
 
Gws 20140418 camel_groovy
Gws 20140418 camel_groovyGws 20140418 camel_groovy
Gws 20140418 camel_groovyNobuhiro Sue
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器Yukitaka Uchikoshi
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方Yosuke Furukawa
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?Masahito Zembutsu
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールAtsuo Ishimoto
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Uchio Kondo
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Yasutaka Kawamoto
 
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall博文 斉藤
 
オンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用についてオンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用についてYASUKAZU NAGATOMI
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Atsuo Ishimoto
 

What's hot (19)

GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
 
HiRoshimaR6_ExplodingBoxplot
HiRoshimaR6_ExplodingBoxplotHiRoshimaR6_ExplodingBoxplot
HiRoshimaR6_ExplodingBoxplot
 
ocamloptの全体像
ocamloptの全体像ocamloptの全体像
ocamloptの全体像
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 spring
 
LINQ in Unity
LINQ in UnityLINQ in Unity
LINQ in Unity
 
NDS#31
NDS#31NDS#31
NDS#31
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
 
Gws 20140418 camel_groovy
Gws 20140418 camel_groovyGws 20140418 camel_groovy
Gws 20140418 camel_groovy
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
 
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
 
Fabric Essentials
Fabric EssentialsFabric Essentials
Fabric Essentials
 
オンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用についてオンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用について
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 

Viewers also liked

仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプトbsdhack
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極めるbsdhack
 
Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)umidori
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらいNaoki Nagazumi
 
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考えるHideto Ishibashi
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall博文 斉藤
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028博文 斉藤
 
弾幕の科学――モデル化、生成、ランク、おもてなし
弾幕の科学――モデル化、生成、ランク、おもてなし弾幕の科学――モデル化、生成、ランク、おもてなし
弾幕の科学――モデル化、生成、ランク、おもてなしIGDA Japan
 
C++のビルド高速化について
C++のビルド高速化についてC++のビルド高速化について
C++のビルド高速化についてAimingStudy
 
東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイ東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイIGDA Japan
 
Bashのヒストリ展開を活用する
Bashのヒストリ展開を活用するBashのヒストリ展開を活用する
Bashのヒストリ展開を活用するbsdhack
 
Usp友の会勉強会、ジャクソン構造図の巻(後編)
Usp友の会勉強会、ジャクソン構造図の巻(後編)Usp友の会勉強会、ジャクソン構造図の巻(後編)
Usp友の会勉強会、ジャクソン構造図の巻(後編)umidori
 
FreeBSDのブートプロセス
FreeBSDのブートプロセスFreeBSDのブートプロセス
FreeBSDのブートプロセスbsdhack
 
2015.08.29 JUS共催勉強会資料
2015.08.29 JUS共催勉強会資料2015.08.29 JUS共催勉強会資料
2015.08.29 JUS共催勉強会資料umidori
 
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Ryuichi Ueda
 
正規表現
正規表現正規表現
正規表現bsdhack
 
確率ロボティクス第九回
確率ロボティクス第九回確率ロボティクス第九回
確率ロボティクス第九回Ryuichi Ueda
 

Viewers also liked (20)

仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極める
 
awk入門
awk入門awk入門
awk入門
 
Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
 
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
 
Usptomonokai 20111028
Usptomonokai 20111028Usptomonokai 20111028
Usptomonokai 20111028
 
弾幕の科学――モデル化、生成、ランク、おもてなし
弾幕の科学――モデル化、生成、ランク、おもてなし弾幕の科学――モデル化、生成、ランク、おもてなし
弾幕の科学――モデル化、生成、ランク、おもてなし
 
C++のビルド高速化について
C++のビルド高速化についてC++のビルド高速化について
C++のビルド高速化について
 
東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイ東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイ
 
Bashのヒストリ展開を活用する
Bashのヒストリ展開を活用するBashのヒストリ展開を活用する
Bashのヒストリ展開を活用する
 
Usp友の会勉強会、ジャクソン構造図の巻(後編)
Usp友の会勉強会、ジャクソン構造図の巻(後編)Usp友の会勉強会、ジャクソン構造図の巻(後編)
Usp友の会勉強会、ジャクソン構造図の巻(後編)
 
FreeBSDのブートプロセス
FreeBSDのブートプロセスFreeBSDのブートプロセス
FreeBSDのブートプロセス
 
2015.08.29 JUS共催勉強会資料
2015.08.29 JUS共催勉強会資料2015.08.29 JUS共催勉強会資料
2015.08.29 JUS共催勉強会資料
 
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会
 
Awk勉強会用資料
Awk勉強会用資料Awk勉強会用資料
Awk勉強会用資料
 
Tips for bash script
Tips for bash scriptTips for bash script
Tips for bash script
 
正規表現
正規表現正規表現
正規表現
 
確率ロボティクス第九回
確率ロボティクス第九回確率ロボティクス第九回
確率ロボティクス第九回
 

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

はてなのサービスの開発環境
はてなのサービスの開発環境はてなのサービスの開発環境
はてなのサービスの開発環境ast_j
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4hirokiky
 
おれが考えた見やすい通知
おれが考えた見やすい通知おれが考えた見やすい通知
おれが考えた見やすい通知Yoshiyuki MIKAMI
 
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
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
使ってみよう CloudStack
使ってみよう CloudStack 使ってみよう CloudStack
使ってみよう CloudStack samemoon
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2Kenichiro MATOHARA
 
Lightweight Keycloak
Lightweight KeycloakLightweight Keycloak
Lightweight KeycloakHiroyuki Wada
 
ReVIEWとLibreOfficeとOMakeで本を書きましょう!
ReVIEWとLibreOfficeとOMakeで本を書きましょう!ReVIEWとLibreOfficeとOMakeで本を書きましょう!
ReVIEWとLibreOfficeとOMakeで本を書きましょう!Kiwamu Okabe
 
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4bitter_fox
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使うMasashi Shinbara
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And JekyllYoji Shidara
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較真治 米田
 
java-java-bpstudy-connpass
java-java-bpstudy-connpassjava-java-bpstudy-connpass
java-java-bpstudy-connpassHaruo Sato
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Tetsuyuki Kobayashi
 
初めてのPadrino
初めてのPadrino初めてのPadrino
初めてのPadrinoTakeshi Yabe
 
Casual convergence
Casual convergenceCasual convergence
Casual convergenceazukiwasher
 

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

はてなのサービスの開発環境
はてなのサービスの開発環境はてなのサービスの開発環境
はてなのサービスの開発環境
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4
 
おれが考えた見やすい通知
おれが考えた見やすい通知おれが考えた見やすい通知
おれが考えた見やすい通知
 
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
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
使ってみよう CloudStack
使ってみよう CloudStack 使ってみよう CloudStack
使ってみよう CloudStack
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
 
Lightweight Keycloak
Lightweight KeycloakLightweight Keycloak
Lightweight Keycloak
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
ReVIEWとLibreOfficeとOMakeで本を書きましょう!
ReVIEWとLibreOfficeとOMakeで本を書きましょう!ReVIEWとLibreOfficeとOMakeで本を書きましょう!
ReVIEWとLibreOfficeとOMakeで本を書きましょう!
 
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
 
java-java-bpstudy-connpass
java-java-bpstudy-connpassjava-java-bpstudy-connpass
java-java-bpstudy-connpass
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
Hacking Vox and Plagger
Hacking Vox and PlaggerHacking Vox and Plagger
Hacking Vox and Plagger
 
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
 
初めてのPadrino
初めてのPadrino初めてのPadrino
初めてのPadrino
 
Casual convergence
Casual convergenceCasual convergence
Casual convergence
 

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博文 斉藤
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理博文 斉藤
 

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
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理
 

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

  • 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. シェル芸とは?  シェル芸とは、現代においてもっとも過激と 目される CLI ワンライナー原理主義の一派。 武田久美子を教祖とし、夏になると信者は女 も男も老いも若きも貝がらビキニで海辺を ホーミタイする危険な思想である。  アンサイクロペディア http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 7 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 ネタが古くて 30 代後半でないと分からない上、違います!
  • 8. シェル芸とは?  マウスも使わず、ソースコードも残さず、GUI ツールを立ち上げる間もなく、あらゆる調 査・計算・テキスト処理を CLI 端末へのコマ ンド入力一撃で終わらすこと。  シェル芸の定義バージョン 1.0 http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 8 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 「USP 友の会」の上田会長の定義です
  • 9. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 9 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 今回のテーマ
  • 10. 今回のテーマはファイル  ファイルを拡張子で判断しない  file コマンドが便利です  ファイルのコピーや移動はどうすれば良いか  実行前に確認できるようにする  ファイルから必要な部分だけを抜き出す  HTML, XML の扱いはどうすれば良いか http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 10 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 今までのシェル芸勉強会にないネタです
  • 11. 重要なこと  できなくても構いません  得意、不得意があります  答えが違っても構いません  TIMTOWTDI の精神でやりましょう  手を動かしてください  頭ではなく手を動かしてください http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 11 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 頭もフル活用してください
  • 12. 最初に  以下のファイルを落としてください  http://gauc.no-ip.org/~hi_saito/jus/jus_sample.tar.gz http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 12 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 できれば、CLI でお願いします $ mkdir jus $ cd !$ $ wget http://gauc.no-ip.org/~hi_saito/jus/jus_sample.tar.gz $ tar xzvf jus_sample.tar.gz List: CLI での落とし方
  • 13. 問題のツリー http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 13 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 できれば、CLI でお願いします jus_sample/ +--- all/ | +--- test_01.jpg | +--- test_02.jpg | +--- test_01.png | +--- test_02.png | +--- test_01.txt | +--- test_02.txt | +--- test_01.html | +--- test_02.html +--- images/ +--- text/ +--- thumbnail/ List: 問題のディレクトリ構造 確認してください
  • 14. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 14 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 問題 (6 問あります)
  • 15. 問題 1  画像ファイルだけを images/ ディレクトリに 移動してください  拡張子だけで判断しないでください 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 日 シェルスクリプトワークショップ @鳥取環境大学 $ find -type f | xargs file | grep 'image' | awk -F':' '{print $1, $1}' | awk '{sub(/all/, "images", $2); print $0}' | awk '{print "mv " $0}' | sh List: 解答例 1  xargs コマンドの使い方を知ろう  file コマンドでファイル種類を判別  確認後に最後に Shell に渡して実行 Demo
  • 17. 問題 2  テキストファイルだけを text/ ディレクトリ にコピーしてください  拡張子だけで判断しないでください 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 日 シェルスクリプトワークショップ @鳥取環境大学 $ find -type f | xargs file | grep 'text' | awk -F':' '{print $1, $1}' | awk '{sub(/all/, "text", $2); print $0}' | awk '{print "cp " $0}' | sh List: 解答例 2  xargs コマンドの使い方を知ろう  file コマンドでファイル種類を判別  確認後に最後に Shell に渡して実行 Demo
  • 19. 問題 3  画像を 32 x 32 ピクセル PNG 形式に変換して thumbnail/ ディレクトリに作成してくださ い  拡張子だけで判断しないでください 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 日 シェルスクリプトワークショップ @鳥取環境大学 $ find images/ -type f | awk '{print $1, $1}' | sed 's: images: thumbnail:' | sed 's:^:convert -geometry 32x32! :' | sed 's:$:.png:' | sh List: 解答例 3  sed の区切りは "/" ではなく、":" が便利  確認後に最後に Shell に渡して実行 Demo
  • 21. 問題 4  test_01.html, test_02.html のタイトルを 抜き出してください  改行の有無をどうするかがポイントです 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 日 シェルスクリプトワークショップ @鳥取環境大学 $ find text/ -type f | xargs file | grep 'HTML' | awk -F':' '{print $1}' | xargs -n 1 cat | tr -d 'n' | grep -Eoi '<title>[^<]+</title>' | sed -r 's:</?[^>]+>::g' List: 解答例 4  XML, HTML は一旦改行を正しく付け直す  sed の区切りは "/" ではなく、":" が便利 Demo
  • 23. 問題 5  test_01.html, test_02.html の HTML タ グを削除してください  改行の有無をどうするかがポイントです 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 日 シェルスクリプトワークショップ @鳥取環境大学 $ find text/ -type f | xargs file | grep 'HTML' | awk -F':' '{print $1}' | xargs sed -r 's:</?[^>]+>::g' | awk 'NF' List: 解答例 5  sed での最小一致を学ぼう  sed の区切りは "/" ではなく、":" が便利  余計な改行は AWK で削除 Demo
  • 25. 問題 6  できあがった階層構造をツリー表示してくだ さい  tree コマンドは使用禁止です http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 25 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学
  • 26. 解答例 6 http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 26 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 $ find | sort | tr '/' ' ' | sed -r 's:[^ ]+[ ]: +--- :g' | sed -r 's:--- : :g' | sed -r 's:[ ]+[ ]: | :g' List: 解答例 6  sed は GNU 拡張が便利 Demo
  • 27. 問題 X  以下の住所を横書きで TTF 化してください  鳥取県鳥取市,若葉台北1-1-1,鳥取環境大学  いわゆる宛名書きです http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 27 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学
  • 28. 解答例 X http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 28 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 $ echo '鳥取県鳥取市,若葉台北1-1-1,鳥取環境 大学' | sed 's:$:様:' | tr ',' 'n' | convert -pointsize 40 -font aoyagikouzanfont2.ttf label:@- jusyo.png List: 解答例 X  覚える必要はありません。 Demo
  • 29. 問題 XX  以下の住所を縦書きで TTF 化してください  鳥取県鳥取市,若葉台北1-1-1,鳥取環境大学  いわゆる宛名書きです http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 29 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学
  • 30. 解答例 XX http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 30 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 $ echo '鳥取県鳥取市,若葉台北1-1-1,鳥取環境 大学' | sed 's:$:様:' | tr ',' 'n' | tac | xargs -n1 -I% sh -c ' echo "%" | grep -o '.' | convert -pointsize 40 -font sazanami-mincho.ttf label:@- miff:-' | convert - +append jusyo.png List: 解答例 XX  覚える必要はありません。 Demo
  • 31. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 31 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 質問はありますか?
  • 32. http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 32 - 2014 年 12 月 13, 14 日 シェルスクリプトワークショップ @鳥取環境大学 ご清聴ありがとうございました