SlideShare a Scribd company logo
1 of 40
Download to read offline
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
.
.
. ..
.
.
シェルワンライナー勉強会@関西
(第 11 回シェル芸勉強会)
主催: 日本 UNIX ユーザ会 & USP 友の会
会場: ECC コンピュータ専門学校
上田隆一
USP 友の会/産業技術大学院大学
June 14, 2014
June 14, 2014 1 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
タイムテーブル
14:00-14:05: 開会の挨拶
14:05-14:30: ソフトウェアツールと AWK・sed について座学
14:30-14:40: チーム分け・休憩
14:40-16:00: 前半戦(簡単な問題・基礎操作)
16:15-17:35: 後半戦(応用、パズル)
17:35-17:45: クロージング
タイムテーブル June 14, 2014 2 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
自己紹介
上田隆一(36)
USP 友の会会長
産業技術大学院大学助教
USP 研究所アドバイザリーフェロー
仕事
ロボットの研究
コンピュータ関連のなにかいろいろ
自己紹介 June 14, 2014 3 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
最近の話題: 本が出ます!
フルスクラッチから 1 日で CMS を作る
シェルスクリプト高速開発手法入門
CMS といってもマイクロな CMS ですが、
「シェルスクリプトで CGI」というお題を真面目に扱ってます
7/1 発売予定 .. Link
もう一冊書いていて今月末閉め切り死亡
こちらは完全にシェル芸の本
自己紹介 June 14, 2014 4 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
シェル芸勉強会とは
コマンドをつなげるタイプのワンライナーを体得する会
もう 11 回目
何がうれしいか?
表計算ソフトやエディタでチマチマやっていた作業が
瞬殺できる機会が増加
CLI(command line interface)に親しむ
余計な情報がなく高度に抽象化された世界で仕事
わけのわからん GUI ソフトで OS が不安定になる機会激減
プログラマとしての訓練
結局俺ら何やってんだ?→ データの加工
自己紹介 June 14, 2014 5 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
14:05-14:30: ソフトウェアツールと AWK・sed について
ソフトウェアツールと AWK・sed について June 14, 2014 6 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
コマンド
端末からプログラムを立ち上げるときに使う文字列
あるいはプログラムそのもの
UNIX 系では最初からインストールされている
何のため?
システムを操作するためのもの
iptables, service, reboot, shutdown, ...
それ以外
grep, echo, cat, seq, ...
本日は「それ以外」のコマンドの話
何のためにあるの?何で標準で入っているの?
ソフトウェアツールと AWK・sed について コマンド・ソフトウェアツール June 14, 2014 7 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
コマンドの由来
UNIX 黎明期の逸話から
出典
M. Hauben and R. Hauben: “Netizens: On the History and
Impact of Usenet and the Internet,” Wiley-IEEE, 1997.
ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 8 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
grep の誕生
Unix は(名目上)特許のドキュメント管理システムとして
開発された
AT&T ベル研で Doug McIlroy が Unix を使って
テキストの処理をしていた
使っていたのは ed(1)
ポイント: テキストを全部メモリに読み込む
検索を多用しているうちにメモリ不足に
Dennis Ritchie に「ed から検索機能を取り出してほしい」と
依頼
ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 9 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
Ritchie がコマンドを作り grep と名付けられる
ed のコマンド g/re/p から
grep の使い方
標準入力からテキストを読んで
検索条件にマッチしたものを標準出力へ
現在と全く同じ
McIlroy は grep に大変満足
メモリの消費を気にしなくてよい
ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 10 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
ed の検索機能と grep の違い
grep はメモリをほとんど食わない
テキストを 1 行 1 行読んでは捨てればよい
パイプとの親和性
cat | grep | sed のように多段につなげる
パイプも McIlroy が grep 以前に発案していた
UNIX の新規性を語る上で最も重要なものの一つ
grep のような標準入出力を使うコマンドは、
フィルタコマンドと呼ばれた
ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 11 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
他のコマンドの誘発
パイプと grep の効果から他のコマンドが次々誕生
sed(1): ed の置換機能
awk(1): 検索+演算
yacc(1), lex(1): コマンドを作るためのコマンド
他、現在「GNU core utilities」に含まれているコマンドが
続々と作られる
コマンドとパイプ(とファイルへのリダイレクト)で、
テキスト処理のためのフレームワークを形成
ソフトウェアツール
ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 12 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
grep のエピソードまとめ
Unix はもともと文章処理システムのための OS
McIlroy と Unix 開発メンバーによる
パイプとソフトウェアツールの発明と実現
フィルタコマンドは一方通行に入出力を行い、
必要以上のメモリを消費しない
ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 13 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
sed, AWK
Unix 黎明期の重要なコマンド
sed: ed の文字列置換機能から派生
grep: grep の拡張
単機能とは言えないが · · ·
他のコマンドでできないような複雑な処理が可能
UNIX 系 OS 初心者向け
コマンドをたくさん知らなくてもツブシが利く
ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 14 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
sed
Stream EDitor
標準入出力を使って字を加工
使ってみましょう
.
.
. ..
.
.
###「え」を「お」に変換###
uedambp:~ ueda$ echo あいうえお | sed ’s/え/お/g’
あいうおお
###範囲を指定して置換###
uedambp:~ ueda$ seq 1 5 | sed ’2,4s/./a/g’
1
a
a
a
5
###指定した範囲を抽出###
uedambp:~ ueda$ seq 1 5 | sed -n ’3,$p’
3
4
5
ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 15 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
.
.
. ..
.
.
###文章の折り返し###
###Mac だと gsed をインストール(brew install gnu-sed)
uedambp:~ ueda$ echo です。ます。でした。 | gsed ’s/。/&n/g’
です。
ます。
でした。
###逆の操作は tr を使いましょう###
uedambp:~ ueda$ echo です。ます。でした。 |
gsed ’s/。/&n/g’ | tr -d ’n’
です。ます。でした。uedambp:~ ueda$
ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 16 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
AWK
作者 Aho, Weinberger, Kernighan の頭文字で AWK
grep の拡張
数字や文字列の比較で行を抽出
抽出した行に対する操作
プログラミング言語化
使ってみましょう
.
.
. ..
.
.
###grep と同じ操作###
uedambp:~ ueda$ seq 1 10 | awk ’/1/’
1
10
uedambp:~ ueda$ seq 1 10 | awk ’/[240]/’
2
4
10
ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 17 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
.
.
. ..
.
.
###演算###
uedambp:~ ueda$ echo 4.2 1.1 | awk ’{print $1*$2}’
4.62
uedambp:~ ueda$ echo {1..10} | awk ’{print $2+$5}’
7
###抽出して計算###
uedambp:~ ueda$ seq 1 10 | awk ’/[240]/{print $1*2}’
4
8
20
###抽出して加工###
uedambp:~ ueda$ seq 1 10 | awk ’/[240]/{print $1 "円"}’
2 円
4 円
10 円
###集計###
uedambp:~ ueda$ echo {1..10} |
awk ’{for(i=1;i<=NF;i++){a+=$i};print a}’
55
uedambp:~ ueda$ seq 1 10 | awk ’{a+=$1}END{print a}’
55
ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 18 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
.
.
. ..
.
.
###キーごとに集計###
uedambp:~ ueda$ cat input <-こういうファイルを作りましょう
a 1
b 3
a 4
b 2
c 1
uedambp:~ ueda$ cat input |
awk ’{x[$1]+=$2}END{for(k in x){print k,x[k]}}’
a 5
b 5
c 1
###制御構文はしんどいのでこういうコマンドがある(Open usp Tukubai)###
uedambp:~ ueda$ sort input | sm2 1 1 2 2
a 5
b 5
c 1
ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 19 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
.
.
. ..
.
.
###パターンを複数個使う###
uedambp:~ ueda$ cat input |
awk ’$2>=3{print $1,"合格"}$2<3{print $1,"不合格"}’
a 不合格
b 合格
a 合格
b 不合格
c 不合格
ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 20 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
まとめ
コマンドには、OS をいじるためのものだけではなく
テキスト処理のものがある
コマンドは標準入出力を利用することでメモリを食わない
sed, AWK でできること
置換、検索、集計、字の加工
ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 21 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
前半戦(簡単な問題・基礎操作)
全 4 問
簡単と言っておいて簡単であった試しはない
解答は Mac で作りました
Mac の方は brew install coreutils を
Linux、他の OS でのやり方も適宜解説
.
主なコマンド名の違い
..
.
. ..
.
.
Mac, BSD 系 Linux
gdate date
gsed sed
gawk awk
tail -r tac
gtr tr
gfold fold
前半戦(簡単な問題・基礎操作) June 14, 2014 22 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
問題 1
次の echo の出力を、echo にパイプをつなげて
足し算してください。
.
.
. ..
.
.
uedambp:INPUT␣ueda$␣echo␣-12,135,123␣135,123
-12,135,123␣135,123
前半戦(簡単な問題・基礎操作) June 14, 2014 23 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
解答
.
.
. ..
.
.
uedambp:INPUT ueda$ echo -12,135,123 135,123 |
sed ’s/,//g’ | awk ’{print $1+$2}’
-12000000
uedambp:INPUT ueda$ echo -12,135,123 135,123 |
tr -d , | awk ’{print $1+$2}’
-12000000
uedambp:INPUT ueda$ echo -12,135,123 135,123 |
sed ’s/,//g’ | sed ’s/ /+/’ | bc
-12000000
前半戦(簡単な問題・基礎操作) June 14, 2014 24 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
問題 2
次のメモについて、各レコードが「名前 点数」の
順になるようにデータを整形しましょう。
.
.
. ..
.
.
uedambp:INPUT ueda$ cat score
45 鎌田
濱田 72
今泉 84
24 上田
94 斉藤
前半戦(簡単な問題・基礎操作) June 14, 2014 25 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
解答
.
.
. ..
.
.
uedambp:INPUT ueda$ cat score |
awk ’/^[0-9]/{print $2,$1}/^[^0-9]/{print}’
鎌田 45
濱田 72
今泉 84
上田 24
斉藤 94
###別解###
uedambp:INPUT ueda$ cat score |
awk ’/ [0-9]/{print}/^[0-9]/{print $2,$1}’
uedambp:INPUT ueda$ sed ’s/([0-9][0-9]*) (..*)/2 1/’ score
前半戦(簡単な問題・基礎操作) June 14, 2014 26 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
問題 3
m/s に直してください。
1 マイル = 1.609km で演算を
.
.
. ..
.
.
uedambp:INPUT ueda$ cat speed
100km/h
16mph
前半戦(簡単な問題・基礎操作) June 14, 2014 27 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
解答
.
.
. ..
.
.
uedambp:INPUT ueda$ cat speed | sed ’s/[a-z]/ &/’ |
awk ’$2=="km/h"{print $1,1000.0/3600.0}
$2=="mph"{print $1,1609.0/3600.0}’ | awk ’{print $1*$2}’
27.7778
7.1511
uedambp:INPUT ueda$ cat speed | sed ’s;km/h; 1000 3600;’ |
sed ’s;mph; 1609 3600;’ | awk ’{print $1*$2/$3}’
27.7778
7.15111
前半戦(簡単な問題・基礎操作) June 14, 2014 28 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
問題 4
さいとうさん、さわださん、ひろたさん、いとうさんの数を
数えてください。
.
.
. ..
.
.
uedambp:INPUT ueda$ cat name
斎藤 斉藤 沢田 澤田 伊藤
齋藤 齊藤 広田 廣田
前半戦(簡単な問題・基礎操作) June 14, 2014 29 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
解答
.
.
. ..
.
.
uedambp:INPUT ueda$ cat name | xargs -n 1 |
sed ’s/^[齊斉斎齋]/さい/’ | sed ’s/[沢澤]/さわ/’ |
sed ’s/[広廣]/ひろ/’ |
awk ’{a[$1]++}END{for(k in a){print k,a[k]}}’
さわ田 2
伊藤 1
ひろ田 2
さい藤 4
uedambp:INPUT ueda$ cat name | xargs -n 1 |
sed ’s/^[齊斉斎齋]/さい/’ | sed ’s/[沢澤]/さわ/’ |
sed ’s/[広廣]/ひろ/’ | sort | uniq -c
1 伊藤
4 さい藤
2 さわ田
2 ひろ田
前半戦(簡単な問題・基礎操作) June 14, 2014 30 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
後半戦(応用、パズル)
初心者の方は上級者が苦しむ様子をお楽しみください。
後半戦(応用、パズル) June 14, 2014 31 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
問題 5
次の CSV に書いてある数字を足し算してください。
.
.
. ..
.
.
uedambp:INPUT ueda$ cat csv
1,2,"123,456",-5,"-123,444"
6,7,8,"12",9
後半戦(応用、パズル) June 14, 2014 32 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
解答
.
.
. ..
.
.
uedambp:INPUT ueda$ cat csv | sed ’s/,([0-9][0-9]*)"/1/g’ |
gsed ’s/[,"]/n/g’ | awk ’{a+=$1}END{print a}’
52
uedambp:INPUT ueda$ cat csv | gsed ’s/"[^"]*"/n&n/g’ |
awk ’!/^"/{gsub(/,/,"n",$0);print}
/^"/{gsub(/[",]/,"",$0);print}’ |
awk ’{a+=$1}END{print a}’
52
uedambp:INPUT ueda$ cat csv | sed ’s/,/ /g’ |
sed ’s/("[-0-9][0-9]*) /1/g’ | sed ’s/"//g’ | xargs -n 1 |
awk ’{a+=$1}END{print a}’
52
uedambp:INPUT ueda$ cat csv | sed ’s/,/ /g’ |
sed ’s/ ([0-9][0-9]*")/1/g’ | tr -d ’"’ | xargs |
awk ’{for(i=1;i<=NF;i++){a+=$i};print a}’
52
後半戦(応用、パズル) June 14, 2014 33 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
問題 6
次のデータを行列として転置してください。
.
.
. ..
.
.
uedambp:INPUT ueda$ cat matrix
a b c
d e f
g h i
###出力###
uedambp:INPUT ueda$ ???
a d g
b e h
c f i
後半戦(応用、パズル) June 14, 2014 34 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
解答
.
.
. ..
.
.
uedambp:INPUT ueda$ cat matrix |
awk ’{for(i=1;i<=3;i++){print i,NR,$i}}’ | sort |
awk ’NR%3==0{print $3}NR%3!=0{printf $3 " "}’
a d g
b e h
c f i
###別解###
uedambp:INPUT ueda$ cat matrix |
awk ’{for(i=1;i<=3;i++){print i,$i}}’ |
sort | awk ’{print $2}’ | xargs -n 3
uedambp:INPUT ueda$ cat matrix |
gsed ’s/(.) (.) (.)/1 1n2 2n3 3/’ |
sort | sed ’s/.* //’ | xargs -n 3
uedambp:INPUT ueda$ cat matrix |
awk ’{for(i=1;i<=3;i++){x[NR,i]=$i}}
END{for(i=1;i<=3;i++){
for(j=1;j<=3;j++){printf("%s ",x[j,i])}print ""}};’
後半戦(応用、パズル) June 14, 2014 35 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
問題 7
次の IPv6 の IP アドレスから、
省略された 0 を復元してください。
4 桁の頭のゼロは省略できる
.
.
. ..
.
.
uedambp:INPUT ueda$ echo 2001:db8:20:3:1000:100:20:3
2001:db8:20:3:1000:100:20:3
後半戦(応用、パズル) June 14, 2014 36 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
解答
.
.
. ..
.
.
uedambp:INPUT ueda$ echo 2001:db8:20:3:1000:100:20:3 |
tr : ’n’ | sed ’s/^/000/’ | sed ’s/0*(....)$/1/’ |
xargs | tr ’ ’ :
2001:0db8:0020:0003:1000:0100:0020:0003
後半戦(応用、パズル) June 14, 2014 37 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
問題 8
次の IPv6 の IP アドレスから、
省略された 0 を復元してください。
4 桁の頭のゼロは省略できる
1 回だけ、:0000:0000:と 0000
が続くところは:: と省略できる。
.
.
. ..
.
.
uedambp:INPUT ueda$ cat ipv6
2001:db8::1234:0:0:9abc
2001:db8:20:3:1000:100:20:3
2001:db8::9abc
後半戦(応用、パズル) June 14, 2014 38 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
解答
.
.
. ..
.
.
uedambp:INPUT ueda$ cat ipv6 | sed ’s/::/:x:/g’ | tr : ’ ’ |
awk ’{for(i=1;i<=NF;i++){print NR,8-NF,$i}}’ |
awk ’/x/{for(i=0;i<=$2;i++){print}}!/x/{print}’ | tr x 0 |
awk ’{print "000"$3}’ | sed ’s/0*(....)$/ 1/’ | xargs -n 8 | tr ’ ’ :
2001:0db8:0000:0000:1234:0000:0000:9abc
2001:0db8:0020:0003:1000:0100:0020:0003
2001:0db8:0000:0000:0000:0000:0000:9abc
uedambp:INPUT ueda$ cat ipv6 | sed ’s/::/:x:/g’ | tr : ’ ’ |
awk ’{print 8-NF,$0}’ |
awk ’{for(i=1;i<=$1;i++){sub(/x/,"x x",$0)};print}’ |
sed ’s/^..//’ | sed ’s/x/0/g’ | sed ’s/ / 000/g’ |
sed ’s/^/000/’ | sed ’s/([^ ]*)(....) /2:/g’ |
sed ’s/([^:]*)(....)$/2/g’
2001:0db8:0000:0000:1234:0000:0000:9abc
2001:0db8:0020:0003:1000:0100:0020:0003
2001:0db8:0000:0000:0000:0000:0000:9abc
後半戦(応用、パズル) June 14, 2014 39 / 40
. . . . . .
タイムテーブル 自己紹介
. . . . . . . . . . . . . . .
ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル)
おわりに
おつかれさまでした!
少しずつ無理せず端末でできることを
増やしていきましょう
後半戦(応用、パズル) June 14, 2014 40 / 40

More Related Content

Viewers also liked

Uspstudy20121208qonly
Uspstudy20121208qonlyUspstudy20121208qonly
Uspstudy20121208qonlyRyuichi Ueda
 
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会Ryuichi Ueda
 
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会Ryuichi Ueda
 
20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライドRyuichi Ueda
 
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつりRyuichi Ueda
 
20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/SpringRyuichi Ueda
 
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライドRyuichi Ueda
 
20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライドRyuichi Ueda
 
第31回シェル芸勉強会スライド
第31回シェル芸勉強会スライド第31回シェル芸勉強会スライド
第31回シェル芸勉強会スライドRyuichi Ueda
 
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#382012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38Ryuichi Ueda
 

Viewers also liked (10)

Uspstudy20121208qonly
Uspstudy20121208qonlyUspstudy20121208qonly
Uspstudy20121208qonly
 
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会
 
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
 
20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド
 
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
 
20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring20130223 OSC Tokyo/Spring
20130223 OSC Tokyo/Spring
 
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド
 
20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド
 
第31回シェル芸勉強会スライド
第31回シェル芸勉強会スライド第31回シェル芸勉強会スライド
第31回シェル芸勉強会スライド
 
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#382012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38
 

Similar to jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)

20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)Ryuichi Ueda
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
 
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)智啓 出川
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングComputational Materials Science Initiative
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めYou&I
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 installMakoto Uehara
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPUTakuro Iizuka
 
20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部NVIDIA Japan
 
Zマイスターとの新たな価値探求 z/OS
Zマイスターとの新たな価値探求 z/OSZマイスターとの新たな価値探求 z/OS
Zマイスターとの新たな価値探求 z/OSIBMソリューション
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎Noriaki Ando
 
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたサーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたVirtualTech Japan Inc.
 

Similar to jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会) (20)

20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
20140614 【問題だけスライド】jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
 
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
 
No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門
 
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティングCMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 install
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
Zマイスターとの新たな価値探求 z/OS
Zマイスターとの新たな価値探求 z/OSZマイスターとの新たな価値探求 z/OS
Zマイスターとの新たな価値探求 z/OS
 
Hacking Vox and Plagger
Hacking Vox and PlaggerHacking Vox and Plagger
Hacking Vox and Plagger
 
NanoA
NanoANanoA
NanoA
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
 
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたサーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
 

More from Ryuichi Ueda

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライドRyuichi Ueda
 
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックシェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックRyuichi Ueda
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナーRyuichi Ueda
 
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話シェル芸勉強会と会場の話
シェル芸勉強会と会場の話Ryuichi Ueda
 
移動ロボットのナビゲーション
移動ロボットのナビゲーション移動ロボットのナビゲーション
移動ロボットのナビゲーションRyuichi Ueda
 
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆Ryuichi Ueda
 
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライドRyuichi Ueda
 
bash(の変な使い方)update
bash(の変な使い方)updatebash(の変な使い方)update
bash(の変な使い方)updateRyuichi Ueda
 
第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニングRyuichi Ueda
 
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Ryuichi Ueda
 
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トークRyuichi Ueda
 
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロRyuichi Ueda
 
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習Ryuichi Ueda
 
ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018Ryuichi Ueda
 
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018Ryuichi Ueda
 
Robot frontier lesson3 2018
Robot frontier lesson3 2018Robot frontier lesson3 2018
Robot frontier lesson3 2018Ryuichi Ueda
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018Ryuichi Ueda
 
Robot frontier lesson1 2018
Robot frontier lesson1 2018Robot frontier lesson1 2018
Robot frontier lesson1 2018Ryuichi Ueda
 
第34回シェル芸勉強会
第34回シェル芸勉強会第34回シェル芸勉強会
第34回シェル芸勉強会Ryuichi Ueda
 
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」Ryuichi Ueda
 

More from Ryuichi Ueda (20)

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド
 
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックシェル・ワンライナー160本ノック
シェル・ワンライナー160本ノック
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー
 
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話シェル芸勉強会と会場の話
シェル芸勉強会と会場の話
 
移動ロボットのナビゲーション
移動ロボットのナビゲーション移動ロボットのナビゲーション
移動ロボットのナビゲーション
 
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
 
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド
 
bash(の変な使い方)update
bash(の変な使い方)updatebash(の変な使い方)update
bash(の変な使い方)update
 
第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング
 
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
 
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク
 
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ
 
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習
 
ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018
 
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018
 
Robot frontier lesson3 2018
Robot frontier lesson3 2018Robot frontier lesson3 2018
Robot frontier lesson3 2018
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018
 
Robot frontier lesson1 2018
Robot frontier lesson1 2018Robot frontier lesson1 2018
Robot frontier lesson1 2018
 
第34回シェル芸勉強会
第34回シェル芸勉強会第34回シェル芸勉強会
第34回シェル芸勉強会
 
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
 

jus & USP友の会共催 シェルワンライナー勉強会@関西(第11回シェル芸勉強会)

  • 1. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) . . . .. . . シェルワンライナー勉強会@関西 (第 11 回シェル芸勉強会) 主催: 日本 UNIX ユーザ会 & USP 友の会 会場: ECC コンピュータ専門学校 上田隆一 USP 友の会/産業技術大学院大学 June 14, 2014 June 14, 2014 1 / 40
  • 2. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) タイムテーブル 14:00-14:05: 開会の挨拶 14:05-14:30: ソフトウェアツールと AWK・sed について座学 14:30-14:40: チーム分け・休憩 14:40-16:00: 前半戦(簡単な問題・基礎操作) 16:15-17:35: 後半戦(応用、パズル) 17:35-17:45: クロージング タイムテーブル June 14, 2014 2 / 40
  • 3. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 自己紹介 上田隆一(36) USP 友の会会長 産業技術大学院大学助教 USP 研究所アドバイザリーフェロー 仕事 ロボットの研究 コンピュータ関連のなにかいろいろ 自己紹介 June 14, 2014 3 / 40
  • 4. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 最近の話題: 本が出ます! フルスクラッチから 1 日で CMS を作る シェルスクリプト高速開発手法入門 CMS といってもマイクロな CMS ですが、 「シェルスクリプトで CGI」というお題を真面目に扱ってます 7/1 発売予定 .. Link もう一冊書いていて今月末閉め切り死亡 こちらは完全にシェル芸の本 自己紹介 June 14, 2014 4 / 40
  • 5. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) シェル芸勉強会とは コマンドをつなげるタイプのワンライナーを体得する会 もう 11 回目 何がうれしいか? 表計算ソフトやエディタでチマチマやっていた作業が 瞬殺できる機会が増加 CLI(command line interface)に親しむ 余計な情報がなく高度に抽象化された世界で仕事 わけのわからん GUI ソフトで OS が不安定になる機会激減 プログラマとしての訓練 結局俺ら何やってんだ?→ データの加工 自己紹介 June 14, 2014 5 / 40
  • 6. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 14:05-14:30: ソフトウェアツールと AWK・sed について ソフトウェアツールと AWK・sed について June 14, 2014 6 / 40
  • 7. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) コマンド 端末からプログラムを立ち上げるときに使う文字列 あるいはプログラムそのもの UNIX 系では最初からインストールされている 何のため? システムを操作するためのもの iptables, service, reboot, shutdown, ... それ以外 grep, echo, cat, seq, ... 本日は「それ以外」のコマンドの話 何のためにあるの?何で標準で入っているの? ソフトウェアツールと AWK・sed について コマンド・ソフトウェアツール June 14, 2014 7 / 40
  • 8. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) コマンドの由来 UNIX 黎明期の逸話から 出典 M. Hauben and R. Hauben: “Netizens: On the History and Impact of Usenet and the Internet,” Wiley-IEEE, 1997. ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 8 / 40
  • 9. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) grep の誕生 Unix は(名目上)特許のドキュメント管理システムとして 開発された AT&T ベル研で Doug McIlroy が Unix を使って テキストの処理をしていた 使っていたのは ed(1) ポイント: テキストを全部メモリに読み込む 検索を多用しているうちにメモリ不足に Dennis Ritchie に「ed から検索機能を取り出してほしい」と 依頼 ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 9 / 40
  • 10. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) Ritchie がコマンドを作り grep と名付けられる ed のコマンド g/re/p から grep の使い方 標準入力からテキストを読んで 検索条件にマッチしたものを標準出力へ 現在と全く同じ McIlroy は grep に大変満足 メモリの消費を気にしなくてよい ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 10 / 40
  • 11. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) ed の検索機能と grep の違い grep はメモリをほとんど食わない テキストを 1 行 1 行読んでは捨てればよい パイプとの親和性 cat | grep | sed のように多段につなげる パイプも McIlroy が grep 以前に発案していた UNIX の新規性を語る上で最も重要なものの一つ grep のような標準入出力を使うコマンドは、 フィルタコマンドと呼ばれた ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 11 / 40
  • 12. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 他のコマンドの誘発 パイプと grep の効果から他のコマンドが次々誕生 sed(1): ed の置換機能 awk(1): 検索+演算 yacc(1), lex(1): コマンドを作るためのコマンド 他、現在「GNU core utilities」に含まれているコマンドが 続々と作られる コマンドとパイプ(とファイルへのリダイレクト)で、 テキスト処理のためのフレームワークを形成 ソフトウェアツール ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 12 / 40
  • 13. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) grep のエピソードまとめ Unix はもともと文章処理システムのための OS McIlroy と Unix 開発メンバーによる パイプとソフトウェアツールの発明と実現 フィルタコマンドは一方通行に入出力を行い、 必要以上のメモリを消費しない ソフトウェアツールと AWK・sed について コマンドの由来 June 14, 2014 13 / 40
  • 14. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) sed, AWK Unix 黎明期の重要なコマンド sed: ed の文字列置換機能から派生 grep: grep の拡張 単機能とは言えないが · · · 他のコマンドでできないような複雑な処理が可能 UNIX 系 OS 初心者向け コマンドをたくさん知らなくてもツブシが利く ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 14 / 40
  • 15. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) sed Stream EDitor 標準入出力を使って字を加工 使ってみましょう . . . .. . . ###「え」を「お」に変換### uedambp:~ ueda$ echo あいうえお | sed ’s/え/お/g’ あいうおお ###範囲を指定して置換### uedambp:~ ueda$ seq 1 5 | sed ’2,4s/./a/g’ 1 a a a 5 ###指定した範囲を抽出### uedambp:~ ueda$ seq 1 5 | sed -n ’3,$p’ 3 4 5 ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 15 / 40
  • 16. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) . . . .. . . ###文章の折り返し### ###Mac だと gsed をインストール(brew install gnu-sed) uedambp:~ ueda$ echo です。ます。でした。 | gsed ’s/。/&n/g’ です。 ます。 でした。 ###逆の操作は tr を使いましょう### uedambp:~ ueda$ echo です。ます。でした。 | gsed ’s/。/&n/g’ | tr -d ’n’ です。ます。でした。uedambp:~ ueda$ ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 16 / 40
  • 17. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) AWK 作者 Aho, Weinberger, Kernighan の頭文字で AWK grep の拡張 数字や文字列の比較で行を抽出 抽出した行に対する操作 プログラミング言語化 使ってみましょう . . . .. . . ###grep と同じ操作### uedambp:~ ueda$ seq 1 10 | awk ’/1/’ 1 10 uedambp:~ ueda$ seq 1 10 | awk ’/[240]/’ 2 4 10 ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 17 / 40
  • 18. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) . . . .. . . ###演算### uedambp:~ ueda$ echo 4.2 1.1 | awk ’{print $1*$2}’ 4.62 uedambp:~ ueda$ echo {1..10} | awk ’{print $2+$5}’ 7 ###抽出して計算### uedambp:~ ueda$ seq 1 10 | awk ’/[240]/{print $1*2}’ 4 8 20 ###抽出して加工### uedambp:~ ueda$ seq 1 10 | awk ’/[240]/{print $1 "円"}’ 2 円 4 円 10 円 ###集計### uedambp:~ ueda$ echo {1..10} | awk ’{for(i=1;i<=NF;i++){a+=$i};print a}’ 55 uedambp:~ ueda$ seq 1 10 | awk ’{a+=$1}END{print a}’ 55 ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 18 / 40
  • 19. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) . . . .. . . ###キーごとに集計### uedambp:~ ueda$ cat input <-こういうファイルを作りましょう a 1 b 3 a 4 b 2 c 1 uedambp:~ ueda$ cat input | awk ’{x[$1]+=$2}END{for(k in x){print k,x[k]}}’ a 5 b 5 c 1 ###制御構文はしんどいのでこういうコマンドがある(Open usp Tukubai)### uedambp:~ ueda$ sort input | sm2 1 1 2 2 a 5 b 5 c 1 ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 19 / 40
  • 20. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) . . . .. . . ###パターンを複数個使う### uedambp:~ ueda$ cat input | awk ’$2>=3{print $1,"合格"}$2<3{print $1,"不合格"}’ a 不合格 b 合格 a 合格 b 不合格 c 不合格 ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 20 / 40
  • 21. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) まとめ コマンドには、OS をいじるためのものだけではなく テキスト処理のものがある コマンドは標準入出力を利用することでメモリを食わない sed, AWK でできること 置換、検索、集計、字の加工 ソフトウェアツールと AWK・sed について sed, AWK June 14, 2014 21 / 40
  • 22. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 前半戦(簡単な問題・基礎操作) 全 4 問 簡単と言っておいて簡単であった試しはない 解答は Mac で作りました Mac の方は brew install coreutils を Linux、他の OS でのやり方も適宜解説 . 主なコマンド名の違い .. . . .. . . Mac, BSD 系 Linux gdate date gsed sed gawk awk tail -r tac gtr tr gfold fold 前半戦(簡単な問題・基礎操作) June 14, 2014 22 / 40
  • 23. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 問題 1 次の echo の出力を、echo にパイプをつなげて 足し算してください。 . . . .. . . uedambp:INPUT␣ueda$␣echo␣-12,135,123␣135,123 -12,135,123␣135,123 前半戦(簡単な問題・基礎操作) June 14, 2014 23 / 40
  • 24. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 解答 . . . .. . . uedambp:INPUT ueda$ echo -12,135,123 135,123 | sed ’s/,//g’ | awk ’{print $1+$2}’ -12000000 uedambp:INPUT ueda$ echo -12,135,123 135,123 | tr -d , | awk ’{print $1+$2}’ -12000000 uedambp:INPUT ueda$ echo -12,135,123 135,123 | sed ’s/,//g’ | sed ’s/ /+/’ | bc -12000000 前半戦(簡単な問題・基礎操作) June 14, 2014 24 / 40
  • 25. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 問題 2 次のメモについて、各レコードが「名前 点数」の 順になるようにデータを整形しましょう。 . . . .. . . uedambp:INPUT ueda$ cat score 45 鎌田 濱田 72 今泉 84 24 上田 94 斉藤 前半戦(簡単な問題・基礎操作) June 14, 2014 25 / 40
  • 26. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 解答 . . . .. . . uedambp:INPUT ueda$ cat score | awk ’/^[0-9]/{print $2,$1}/^[^0-9]/{print}’ 鎌田 45 濱田 72 今泉 84 上田 24 斉藤 94 ###別解### uedambp:INPUT ueda$ cat score | awk ’/ [0-9]/{print}/^[0-9]/{print $2,$1}’ uedambp:INPUT ueda$ sed ’s/([0-9][0-9]*) (..*)/2 1/’ score 前半戦(簡単な問題・基礎操作) June 14, 2014 26 / 40
  • 27. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 問題 3 m/s に直してください。 1 マイル = 1.609km で演算を . . . .. . . uedambp:INPUT ueda$ cat speed 100km/h 16mph 前半戦(簡単な問題・基礎操作) June 14, 2014 27 / 40
  • 28. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 解答 . . . .. . . uedambp:INPUT ueda$ cat speed | sed ’s/[a-z]/ &/’ | awk ’$2=="km/h"{print $1,1000.0/3600.0} $2=="mph"{print $1,1609.0/3600.0}’ | awk ’{print $1*$2}’ 27.7778 7.1511 uedambp:INPUT ueda$ cat speed | sed ’s;km/h; 1000 3600;’ | sed ’s;mph; 1609 3600;’ | awk ’{print $1*$2/$3}’ 27.7778 7.15111 前半戦(簡単な問題・基礎操作) June 14, 2014 28 / 40
  • 29. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 問題 4 さいとうさん、さわださん、ひろたさん、いとうさんの数を 数えてください。 . . . .. . . uedambp:INPUT ueda$ cat name 斎藤 斉藤 沢田 澤田 伊藤 齋藤 齊藤 広田 廣田 前半戦(簡単な問題・基礎操作) June 14, 2014 29 / 40
  • 30. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 解答 . . . .. . . uedambp:INPUT ueda$ cat name | xargs -n 1 | sed ’s/^[齊斉斎齋]/さい/’ | sed ’s/[沢澤]/さわ/’ | sed ’s/[広廣]/ひろ/’ | awk ’{a[$1]++}END{for(k in a){print k,a[k]}}’ さわ田 2 伊藤 1 ひろ田 2 さい藤 4 uedambp:INPUT ueda$ cat name | xargs -n 1 | sed ’s/^[齊斉斎齋]/さい/’ | sed ’s/[沢澤]/さわ/’ | sed ’s/[広廣]/ひろ/’ | sort | uniq -c 1 伊藤 4 さい藤 2 さわ田 2 ひろ田 前半戦(簡単な問題・基礎操作) June 14, 2014 30 / 40
  • 31. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 後半戦(応用、パズル) 初心者の方は上級者が苦しむ様子をお楽しみください。 後半戦(応用、パズル) June 14, 2014 31 / 40
  • 32. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 問題 5 次の CSV に書いてある数字を足し算してください。 . . . .. . . uedambp:INPUT ueda$ cat csv 1,2,"123,456",-5,"-123,444" 6,7,8,"12",9 後半戦(応用、パズル) June 14, 2014 32 / 40
  • 33. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 解答 . . . .. . . uedambp:INPUT ueda$ cat csv | sed ’s/,([0-9][0-9]*)"/1/g’ | gsed ’s/[,"]/n/g’ | awk ’{a+=$1}END{print a}’ 52 uedambp:INPUT ueda$ cat csv | gsed ’s/"[^"]*"/n&n/g’ | awk ’!/^"/{gsub(/,/,"n",$0);print} /^"/{gsub(/[",]/,"",$0);print}’ | awk ’{a+=$1}END{print a}’ 52 uedambp:INPUT ueda$ cat csv | sed ’s/,/ /g’ | sed ’s/("[-0-9][0-9]*) /1/g’ | sed ’s/"//g’ | xargs -n 1 | awk ’{a+=$1}END{print a}’ 52 uedambp:INPUT ueda$ cat csv | sed ’s/,/ /g’ | sed ’s/ ([0-9][0-9]*")/1/g’ | tr -d ’"’ | xargs | awk ’{for(i=1;i<=NF;i++){a+=$i};print a}’ 52 後半戦(応用、パズル) June 14, 2014 33 / 40
  • 34. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 問題 6 次のデータを行列として転置してください。 . . . .. . . uedambp:INPUT ueda$ cat matrix a b c d e f g h i ###出力### uedambp:INPUT ueda$ ??? a d g b e h c f i 後半戦(応用、パズル) June 14, 2014 34 / 40
  • 35. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 解答 . . . .. . . uedambp:INPUT ueda$ cat matrix | awk ’{for(i=1;i<=3;i++){print i,NR,$i}}’ | sort | awk ’NR%3==0{print $3}NR%3!=0{printf $3 " "}’ a d g b e h c f i ###別解### uedambp:INPUT ueda$ cat matrix | awk ’{for(i=1;i<=3;i++){print i,$i}}’ | sort | awk ’{print $2}’ | xargs -n 3 uedambp:INPUT ueda$ cat matrix | gsed ’s/(.) (.) (.)/1 1n2 2n3 3/’ | sort | sed ’s/.* //’ | xargs -n 3 uedambp:INPUT ueda$ cat matrix | awk ’{for(i=1;i<=3;i++){x[NR,i]=$i}} END{for(i=1;i<=3;i++){ for(j=1;j<=3;j++){printf("%s ",x[j,i])}print ""}};’ 後半戦(応用、パズル) June 14, 2014 35 / 40
  • 36. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 問題 7 次の IPv6 の IP アドレスから、 省略された 0 を復元してください。 4 桁の頭のゼロは省略できる . . . .. . . uedambp:INPUT ueda$ echo 2001:db8:20:3:1000:100:20:3 2001:db8:20:3:1000:100:20:3 後半戦(応用、パズル) June 14, 2014 36 / 40
  • 37. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 解答 . . . .. . . uedambp:INPUT ueda$ echo 2001:db8:20:3:1000:100:20:3 | tr : ’n’ | sed ’s/^/000/’ | sed ’s/0*(....)$/1/’ | xargs | tr ’ ’ : 2001:0db8:0020:0003:1000:0100:0020:0003 後半戦(応用、パズル) June 14, 2014 37 / 40
  • 38. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 問題 8 次の IPv6 の IP アドレスから、 省略された 0 を復元してください。 4 桁の頭のゼロは省略できる 1 回だけ、:0000:0000:と 0000 が続くところは:: と省略できる。 . . . .. . . uedambp:INPUT ueda$ cat ipv6 2001:db8::1234:0:0:9abc 2001:db8:20:3:1000:100:20:3 2001:db8::9abc 後半戦(応用、パズル) June 14, 2014 38 / 40
  • 39. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) 解答 . . . .. . . uedambp:INPUT ueda$ cat ipv6 | sed ’s/::/:x:/g’ | tr : ’ ’ | awk ’{for(i=1;i<=NF;i++){print NR,8-NF,$i}}’ | awk ’/x/{for(i=0;i<=$2;i++){print}}!/x/{print}’ | tr x 0 | awk ’{print "000"$3}’ | sed ’s/0*(....)$/ 1/’ | xargs -n 8 | tr ’ ’ : 2001:0db8:0000:0000:1234:0000:0000:9abc 2001:0db8:0020:0003:1000:0100:0020:0003 2001:0db8:0000:0000:0000:0000:0000:9abc uedambp:INPUT ueda$ cat ipv6 | sed ’s/::/:x:/g’ | tr : ’ ’ | awk ’{print 8-NF,$0}’ | awk ’{for(i=1;i<=$1;i++){sub(/x/,"x x",$0)};print}’ | sed ’s/^..//’ | sed ’s/x/0/g’ | sed ’s/ / 000/g’ | sed ’s/^/000/’ | sed ’s/([^ ]*)(....) /2:/g’ | sed ’s/([^:]*)(....)$/2/g’ 2001:0db8:0000:0000:1234:0000:0000:9abc 2001:0db8:0020:0003:1000:0100:0020:0003 2001:0db8:0000:0000:0000:0000:0000:9abc 後半戦(応用、パズル) June 14, 2014 39 / 40
  • 40. . . . . . . タイムテーブル 自己紹介 . . . . . . . . . . . . . . . ソフトウェアツールと AWK・sed について 前半戦(簡単な問題・基礎操作) 後半戦(応用、パズル) おわりに おつかれさまでした! 少しずつ無理せず端末でできることを 増やしていきましょう 後半戦(応用、パズル) June 14, 2014 40 / 40