Mais conteúdo relacionado
Semelhante a 20130223 OSC Tokyo/Spring (12)
Mais de Ryuichi Ueda (20)
20130223 OSC Tokyo/Spring
- 2. シェル芸とは?
• 「マウスも使わず、ソースコードも残さず、
GUIツールを立ち上げる間もなく、
あらゆる調査・計算・テキスト処理を
コマンド入力一撃で終わらす。」こと
– 昨年10月のHbstudy#38で初めて使った言葉
– 現在は
Windows
PowerShell
まで飛び火
• 密かなブームか?
2013/02/23
OSC
2013
Tokyo/Spring
2
- 4. 「シェル芸」の狙い
• USP研究所のやっていることを理解してもらう
– 端末叩いたことの無い人には全く理解されない
• バイアスの是正
– いまさら「シェルが便利」などと言うエバンジェリストはいない
– とても便利なのだが、普通は興味の範囲内にならない
• 若い人は使ってない。
• 知らない人を見ていると、
1
+
1
を計算するのに
群論を持ち出しているように見える。
2013/02/23
OSC
2013
Tokyo/Spring
4
- 5. 「シェル芸」の狙い(続き)
• スキルトランスファー
– 「シェル芸勉強会」参加者
• 講師
– 問題と解答を作る(解答はだいたい不完全で、別解が存在)
• 玄人
– 経験・うんちく多し、マニアックで便利なオプションを知っている、
勉強会荒らし。ただしパズルを出すと解けないことが多い
• 玄人ではない人
玄人 v.s.
講師の(平和な)突っ込み合戦を聴き、
全員が勉強する。
2013/02/23
OSC
2013
Tokyo/Spring
5
- 6. これまで
• 2012/10/27
– シェルスクリプトでいろいろやってみよう(Hbstudy#38
)
• 2012/12/8
– 第二回チキチキ シェル芸人養成勉強会
• 2013/2/16
– 第三回シェル芸爆破デスマッチ
– sed
の問題を中心に
• これからも需要がある限り2ヶ月に1回開催予定
– 4/13(土)予定
2013/02/23
OSC
2013
Tokyo/Spring
6
- 8. 1.
FizzBuzz(準備運動)
• こういう出力を得る
– 1,2,Fizz,4,Buzz,Fizz,7,8,Buzz,Buzz,11,Fizz,
13,14,FizzBuzz,16,…
• 短く書くこと。
2013/02/23
OSC
2013
Tokyo/Spring
8
- 9. 解答
• $
seq
1
16
|
awk
'$1%3==0{prin]
"Fizz"}$1%5==0{prin]
"Buzz"}{print
"
",$1}'
|
awk
'{print
$1}'
|
tr
'n'
','
2013/02/23
OSC
2013
Tokyo/Spring
9
- 11. 解答
• $
grep
Ubuntu
*.rst
|
sed
's/:.*//'
|
sort
|
uniq
-‐c
2013/02/23
OSC
2013
Tokyo/Spring
11
- 12. 3.
データ抽出
• キー
a,
b
それぞれについて、一番大きい数字
を取り出してください。
2013/02/23
OSC
2013
Tokyo/Spring
12
- 13. 解答
• $
cat
hoge
|
sort
-‐k1,1
-‐k2,2nr
|
uniq
-‐w
1
(Mac
等だと guniq
を使う)
2013/02/23
OSC
2013
Tokyo/Spring
13
- 14. 4.
日付の計算
• 1978年2月16日は、
2013年2月23日の何日前でしょう?
2013/02/23
OSC
2013
Tokyo/Spring
14
- 15. 解答
• Mac
– $
echo
$(gdate
+%s
-‐d
20130223)
$(gdate
+%s
-‐d
19780216)
|
awk
'{print
$1-‐$2}'
|
awk
'{print
$1/
(24*60*60)}'
(gdate
インストールのこと)
• Linux等
– echo
19780216
20130223
|
tr
'
'
'¥n'
|
date
+%s
–f
-‐
|
tr
'¥n'
'
'
|
awk
'{print
$1-‐$2}'
|
awk
'{print
$1/
(24*60*60)}'
2013/02/23
OSC
2013
Tokyo/Spring
15
- 17. 解答
• $
seq
1
10
|
cat
-‐
num
|
sort
|
uniq
–u
• $
sort
num
<(seq
1
10)
|
uniq
-‐u
2013/02/23
OSC
2013
Tokyo/Spring
17
- 18. 6.
エクセルの読み書き
• ビジネス版
– 読み
• $
rexcelx
1
book.xlsx
– 書き
• $
echo
{1..10}
|
wexcelx
./book.xlsx
1
A7
-‐
>
out.xlsx
2013/02/23
OSC
2013
Tokyo/Spring
18
- 19. 7.
速いソート
• 1億行のデータのソート
2013/02/23
OSC
2013
Tokyo/Spring
19
- 23. 解答
• $
cat
num
|
sed
's/$/
+
/'
|
tr
-‐d
'n'
|
awk
'{print}'
|
sed
's/+
-‐/+
/g'
|
sed
's/+
$//'
|
bc
• $
sm2
0
0
1
1
num
2013/02/23
OSC
2013
Tokyo/Spring
23
- 25. 解答
• $
cat
file
|
cat
-‐n
|
awk
'{for(i=2;i<=NF;i++)
{print
$1,$i}}'
|
sort
-‐k1,1n
-‐k2,2n
|
awk
'{if($1!=a){a=$1;prin]
"n"};print
$2}'
|
tr
'n'
'
'
|
tr
'n'
'n'
|
awk
'NF!=0'
• $
cat
file
|
juni
|
tarr
num=1
|
sort
-‐k1,1n
-‐k2,2n
|
yarr
num=1
|
delf
1
2013/02/23
OSC
2013
Tokyo/Spring
25