More Related Content
PDF
GNU awk (gawk) を用いた Apache ログ解析方法 PDF
Rが苦手な人にもRを使って頂くために~RcommanderとRook~ PPTX
PPTX
Node.js - sleep sort algorithm PDF
菩薩でもわかる!Rで動かすExcelアドインの作り方 PDF
PDF
PDF
What's hot
PDF
PDF
awk v.s. bashどっちが強い?@OSC2011Tokyo PDF
PPTX
PDF
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは… PDF
PDF
PDF
PPTX
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016 PDF
PDF
Start printf 6_takarakasai PDF
Siphone coffeemaker okayama-js-1 PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo PDF
PPTX
PDF
202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshop PDF
PDF
202003 functiontalkinnotesknowsworkshop20th PDF
PDF
Viewers also liked
PDF
分散メモリ環境におけるシェルスクリプトの高速化手法の提案 PPTX
PPTX
PPTX
PDF
CANENERO Advertising - Gilberto Chiacchiera PDF
Lucy redes sociales myspace PDF
Shepherd Elementary School Community Meeting Flyer PDF
PPTX
[KGC 2013] Online Game Security in China PDF
Bashで競技プログラミング #w8lt #w8lt4 PDF
Business Analytics with R DOCX
Trabajo colaborativo list PPTX
eTwinning og medieleg i dagtilbud PDF
WebブラウザでOpen usp Tukubaiを体験してみよう!(2014/02/15 第9回シェル芸勉強会 & 第27回USP友の会定例会) PDF
PPTX
PPTX
Medier i en digital verden 150922 PDF
PDF
Creatividad o mal gusto de los japoneses. PDF
Similar to USP 友の会 LT 資料 20130413
PDF
PDF
PPTX
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」 PDF
PDF
ODP
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会 ODP
PDF
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~ PDF
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall PDF
20130223 OSC Tokyo/Spring PDF
2017-12-04 Linuxの基本構造とBashでの扱い方 PDF
jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会) PDF
PDF
PDF
OSC2012 Tokyo Spring, USP lab. presentation PPTX
PDF
PDF
PDF
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり PDF
More from 博文 斉藤
PPTX
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」 PPTX
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料 PDF
Obsidian Talk JP - Template & Daily notes - 2021-09-04 PDF
PDF
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall PDF
Obsidian Talk JP 資料 - 2021-10-15 PPTX
PDF
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall PPTX
PPT
PDF
USP 友の会 LT 資料 20130413
- 1.
USP 友の会 LT(2013/04/13)
wget と curl で
並列ダウンロード
斉藤 博文
@hi_saito
hi_saito@yk.rim.or.jp
- 2.
自己紹介
斉藤 博文
日本 GNU AWK ユーザー会主宰
@hi_saito
hi_saito@yk.rim.or.jp
Shell + AWK 最強!
- 3.
- 4.
使うもの
bash
wget
curl でも可能ですが、今回の場合には
wget の方が便利です。
tr
egrep (grep)
sort
sed
xargs
- 5.
- 6.
コードにしてみる
$ wget -O- http://www.usptomo.com/ |
tr """ "n" |
egrep ".(JPG|PNG|GIF)" |
sort -u |
sed 's|^|http://www.usptomo.com|' |
xargs -P0 -n1 wget
xargs で -PN で N 並列実行ですが、-P0
で可能な限り並列実行します。
xargs の -nN で N 個単位で分割しますので、
-n1 だと結果的に全て並列処理になります。
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
サイズを分割数で割る
for i in`seq 1 ${DIV}`; do
START_BYTE=$(echo "${CONTENT_LENGTH}
/ ${DIV} * (${i} - 1)" | bc)
END_BYTE=$(echo "${CONTENT_LENGTH}
/ ${DIV} * ${i} - 1" | bc)
if [ ${i} -eq ${DIV} ]; then
END_BYTE=${CONTENT_LENGTH}
fi
分割して落とす先頭バイト数と終了バイト数
を計算します。
- 13.
ナンバリングして並列で落とす
TMP_FILE=$(printf "%d-%02d-%s"
${PID} ${i} ${FILE})
curl -s --range ${START_BYTE}-${END_BYTE}
-o ${TMP_FILE} ${URL} &
done
curl は --range で落とす範囲を指定するこ
とができます。
- 14.
- 15.
USP 友の会 LT(2013/04/13)
iPhone 用の
カレンダー壁紙を作る
斉藤 博文
@hi_saito
hi_saito@yk.rim.or.jp
- 16.
使うもの
bash
bash の記述を使っています。
cal
awk
convert (ImageMagick)
- 17.
cal コマンドの基本形
$ cal
April 2013
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
cal コマンドは何も引数がないと今月のカレ
ンダーを表示します。
- 18.
ImageMagick で画像に変換
$ convert-font Ricty-Bold.ttf
-pointsize 40
-fill black
-draw "text 120,450 "$(cal)""
iphone.png calendar.png
ImageMagick は
日本語 TTF も扱え
ます。
文字列だけでなく、
コマンドを埋め込め
ます。
- 19.
日曜日だけを抜き出す
$ cal |awk '$0=substr($0, 1, 2)'
Su
7
14
21
28
この awk の使い方分かりますか? アクショ
ンがないのに表示できていますよね。
- 20.
アクションレスプログラミング
awk はパターン+ アクションですよね。
でも、アクションがない場合は '{print
$0}' が省略されたものと見なれます。
また、awk では基本的に代入は「真」になり
ます。
$0=substr($0, 1, 2)
等価!
{
$0 = substr($0, 1, 2);
print $0;
}
- 21.
土曜日だけを抜き出す
$ cal |awk '$0=sprintf("%20s",substr($0, 19, 2))'
Sa
6
13
20
27
これもアクションレスプログラミングですね。
ここまでくれば、あとは同じです。
- 22.
最終形態
$ convert -fontRicty-Bold.ttf -pointsize 40
-fill black -draw "text 120,450
"$(cal)""
-fill red -draw "text 120,450
"$(cal|awk '$0=substr($0, 1, 2)')""
-fill blue -draw "text 120,450
"$(cal|awk '$0=sprintf("%20s",substr($0,19,2))')""
iphone.png calendar.png
ほらね。「シェル
芸」でできるでしょ。
- 23.
特定の日付だけを出す方法は?
特定の日付だけを抜き出すことができれば、
今日や国民の休日をマーキングすることもで
きますね。
土日と比べると複雑ですが、やってみてくだ
$ cal | awk -v day="${DAY}" -v str="@"
さい。
'{
regexp = "(^| )" day "( |$)";
$0 = gensub(regexp, "1@2", 1, $0);
}
{gsub(/[^@]/, " ")}
{sub(/@/, day)}
1'
- 24.