SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
AWKAWK でででででででで
アクションレスアクションレスアクションレスアクションレスアクションレスアクションレスアクションレスアクションレス・・・・・・・・プログラミングプログラミングプログラミングプログラミングプログラミングプログラミングプログラミングプログラミング
日本 GNU AWK ユーザー会
斉藤 博文 (@hi_saito)
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
AWKAWK のののの基本文法基本文法基本文法基本文法のののの基本文法基本文法基本文法基本文法
BEGIN { ACTION }
PATTERN { ACTION }
END { ACTION }
Point!
• BEGIN や END も同じ PATTERN と考えると分かりやすいね
• ついでに K&R スタイルで書くと統一感が出るね
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
K&RK&R スタイルスタイルスタイルスタイルってってってって何何何何スタイルスタイルスタイルスタイルってってってって何何何何??
if (なんとかなんとかなんとかなんとか)
{
かんとかかんとかかんとかかんとか;
}
if (なんとかなんとかなんとかなんとか) {
かんとかかんとかかんとかかんとか;
}
オールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイル
K&RK&R スタイルスタイルスタイルスタイルスタイルスタイルスタイルスタイル
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
パターンパターンパターンパターンはははは不要不要不要不要パターンパターンパターンパターンはははは不要不要不要不要??
PATTERN { ACTION }
{
if (PATTERN) {
ACTION;
}
}
Point!
• パターンは先頭になくてもプログラムを組めるんです
gauc.no-ip.org
USP 友の会総会 (2011/10/28)
神神神神々々々々のののの言葉言葉言葉言葉神神神神々々々々のののの言葉言葉言葉言葉
•神は言っている「awk は使い捨てプログラムである」と
• We just wanted to have a very simple
scripting language that would allow us
<snip> to be able to write throw-away
programs for routine data processing.
(Prof. Aho)
Point!
• awk が真価を発揮するのは「一行野郎」
• AWKer はワンライナーとかライフライナーみたいな言葉は使ってはいけない
Japan GNU AWK Users' Club
gauc.no-ip.org
USP 友の会総会 (2011/10/28)
PATTERNPATTERN だけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなる??
• { ACTION } が省略された場合、{print $0} と
同じ扱いになる
Japan GNU AWK Users' Club
PATTERNPATTERN ってってってって一体何者一体何者一体何者一体何者ってってってって一体何者一体何者一体何者一体何者??
• PATTERN は「パターン」そのものではなく評価式で、
0 か空文字列以外は「真」になり、{print $0} が実
行される
Point!
• ちょっと便利な grep 程度?
gauc.no-ip.org
USP 友の会総会 (2011/10/28)
神神神神々々々々のののの言葉言葉言葉言葉神神神神々々々々のののの言葉言葉言葉言葉
•神は言っている「awk は grep から産まれた」と。
• We were heavily influenced by GREP.
(Prof. Aho)
Japan GNU AWK Users' Club
Point!
• そんな装備で大丈夫か?
• 大丈夫。問題ない。
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
正規表現正規表現正規表現正規表現へのへのへのへの正規表現正規表現正規表現正規表現へのへのへのへのマッチングマッチングマッチングマッチングマッチングマッチングマッチングマッチング ((grepgrep))
$0 ~ /RegExp/ {print $0}
Point!
• g/re/p の g と p は {print $0} と等価なので、まさに grep
$0 ~ /RegExp/
/RegExp/
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
空行空行空行空行ととととスペーススペーススペーススペースだけのだけのだけのだけの行行行行をををを削除削除削除削除空行空行空行空行ととととスペーススペーススペーススペースだけのだけのだけのだけの行行行行をををを削除削除削除削除
length($0) > 0 && $0 !~ /^[ ¥t]+$/
{print $0}
length($0) > 0 && $0 !~ /^[ ¥t]+$/
length($0) && !/^[ ¥t]+$/
NF
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
$0$0 以外以外以外以外をををを表示表示表示表示するするするする場合場合場合場合はははは以外以外以外以外をををを表示表示表示表示するするするする場合場合場合場合はははは??
• AWK は破壊的に値が代入される
• 常に代入は「真」になる
• つまり $0 に欲しいものを代入すればいい
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
$1$1 をををを表示表示表示表示するするするするをををを表示表示表示表示するするするする
{print $1}
{$0 = $1; print $0}
$0 = $1
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
置換置換置換置換だってできちゃうだってできちゃうだってできちゃうだってできちゃう置換置換置換置換だってできちゃうだってできちゃうだってできちゃうだってできちゃう
{sub(/RegExp/, "STR", $0); print $0}
sub(/RegExp/, "STR") || 4
Point!
• sub() の戻り値は置換された個数
• 1 だと l なのか | なのか I なのか分かりづらいので 4 が好まれるみたい
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
区切区切区切区切区切区切区切区切 (OFS)(OFS) をををを表示表示表示表示するするするするをををを表示表示表示表示するするするする
BEGIN {OFS="¥t"} {print $1}
$ awk -v OFS="¥t"{$1 = $1; print $0}
$ awk -v OFS="¥t" '$1 = $1'
Point!
• これを「フィールドの再構成」といいます
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
改行改行改行改行改行改行改行改行 (ORS)(ORS) をををを変更変更変更変更するにはするにはするにはするにはをををを変更変更変更変更するにはするにはするにはするには??
BEGIN {OFS = "¥n¥n"} {print $0}
BEGIN {OFS = "¥n¥n"} 4
Point!
• print $0 は printf("%sOFS", $0) なので、再構成が不要
ORS = "¥n¥n"
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
みんなみんなみんなみんな大好大好大好大好ききききみんなみんなみんなみんな大好大好大好大好きききき FizzBuzzFizzBuzz
$ seq 100 | ¥
awk
'$0=($0%15)?($0%5)?($0%3)?$0:"Fizz":
"Buzz":"FizzBuzz"'
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
head, tailhead, tail はははははははは??
NR <= 10
headhead
$ tac | awk 'NR <= 10' | tac
tailtail
Point!
• そもそも awk で tail なんか作ってはいけない
• shell と awk を合わせて活用すべし
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
まとめまとめまとめまとめまとめまとめまとめまとめ
• 資源の有効活用 (エコ活動)
• 頭の体操になる (ボケ防止)
• awk だけで記述できない (Shell の勉強もできる)
• さぁ、みんなも今日からアクションレス・プログラミングを
しよう!
Japan GNU AWK Users' Club gauc.no-ip.org
USP 友の会総会 (2011/10/28)
最後最後最後最後にににに最後最後最後最後にににに
• 「日本 GNU AWK ユーザー会」は「USP 友の会」と友
好団体になります?
• Shell と awk の融合による無限の可能性に乞ご期
待?
• http://gauc.no-ip.org/gawk-users-jp/
Point!
• ただし「日本 GNU AWK ユーザー会」と契約しても魔法少女にはなれません

Mais conteúdo relacionado

Destaque

「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!博文 斉藤
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)icchy
 
Awkでeffective前処理
Awkでeffective前処理Awkでeffective前処理
Awkでeffective前処理Shinya Akiba
 
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライドRyuichi Ueda
 
データ解析のための統計モデリング入門3章後半
データ解析のための統計モデリング入門3章後半データ解析のための統計モデリング入門3章後半
データ解析のための統計モデリング入門3章後半Shinya Akiba
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」博文 斉藤
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンスNozomi Ito
 
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつりRyuichi Ueda
 

Destaque (9)

「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
 
Awkでeffective前処理
Awkでeffective前処理Awkでeffective前処理
Awkでeffective前処理
 
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド
 
Tips for bash script
Tips for bash scriptTips for bash script
Tips for bash script
 
データ解析のための統計モデリング入門3章後半
データ解析のための統計モデリング入門3章後半データ解析のための統計モデリング入門3章後半
データ解析のための統計モデリング入門3章後半
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
 
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
 

Mais de 博文 斉藤

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 で行こう!博文 斉藤
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料博文 斉藤
 
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 ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - 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博文 斉藤
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法博文 斉藤
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理博文 斉藤
 

Mais de 博文 斉藤 (12)

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 で行こう!
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
 
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 ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - 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
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理
 

Usptomonokai 20111028

  • 1. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) AWKAWK でででででででで アクションレスアクションレスアクションレスアクションレスアクションレスアクションレスアクションレスアクションレス・・・・・・・・プログラミングプログラミングプログラミングプログラミングプログラミングプログラミングプログラミングプログラミング 日本 GNU AWK ユーザー会 斉藤 博文 (@hi_saito)
  • 2. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) AWKAWK のののの基本文法基本文法基本文法基本文法のののの基本文法基本文法基本文法基本文法 BEGIN { ACTION } PATTERN { ACTION } END { ACTION } Point! • BEGIN や END も同じ PATTERN と考えると分かりやすいね • ついでに K&R スタイルで書くと統一感が出るね
  • 3. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) K&RK&R スタイルスタイルスタイルスタイルってってってって何何何何スタイルスタイルスタイルスタイルってってってって何何何何?? if (なんとかなんとかなんとかなんとか) { かんとかかんとかかんとかかんとか; } if (なんとかなんとかなんとかなんとか) { かんとかかんとかかんとかかんとか; } オールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイルオールドマンスタイル K&RK&R スタイルスタイルスタイルスタイルスタイルスタイルスタイルスタイル
  • 4. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) パターンパターンパターンパターンはははは不要不要不要不要パターンパターンパターンパターンはははは不要不要不要不要?? PATTERN { ACTION } { if (PATTERN) { ACTION; } } Point! • パターンは先頭になくてもプログラムを組めるんです
  • 5. gauc.no-ip.org USP 友の会総会 (2011/10/28) 神神神神々々々々のののの言葉言葉言葉言葉神神神神々々々々のののの言葉言葉言葉言葉 •神は言っている「awk は使い捨てプログラムである」と • We just wanted to have a very simple scripting language that would allow us <snip> to be able to write throw-away programs for routine data processing. (Prof. Aho) Point! • awk が真価を発揮するのは「一行野郎」 • AWKer はワンライナーとかライフライナーみたいな言葉は使ってはいけない Japan GNU AWK Users' Club
  • 6. gauc.no-ip.org USP 友の会総会 (2011/10/28) PATTERNPATTERN だけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなるだけだとどうなる?? • { ACTION } が省略された場合、{print $0} と 同じ扱いになる Japan GNU AWK Users' Club PATTERNPATTERN ってってってって一体何者一体何者一体何者一体何者ってってってって一体何者一体何者一体何者一体何者?? • PATTERN は「パターン」そのものではなく評価式で、 0 か空文字列以外は「真」になり、{print $0} が実 行される Point! • ちょっと便利な grep 程度?
  • 7. gauc.no-ip.org USP 友の会総会 (2011/10/28) 神神神神々々々々のののの言葉言葉言葉言葉神神神神々々々々のののの言葉言葉言葉言葉 •神は言っている「awk は grep から産まれた」と。 • We were heavily influenced by GREP. (Prof. Aho) Japan GNU AWK Users' Club Point! • そんな装備で大丈夫か? • 大丈夫。問題ない。
  • 8. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) 正規表現正規表現正規表現正規表現へのへのへのへの正規表現正規表現正規表現正規表現へのへのへのへのマッチングマッチングマッチングマッチングマッチングマッチングマッチングマッチング ((grepgrep)) $0 ~ /RegExp/ {print $0} Point! • g/re/p の g と p は {print $0} と等価なので、まさに grep $0 ~ /RegExp/ /RegExp/
  • 9. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) 空行空行空行空行ととととスペーススペーススペーススペースだけのだけのだけのだけの行行行行をををを削除削除削除削除空行空行空行空行ととととスペーススペーススペーススペースだけのだけのだけのだけの行行行行をををを削除削除削除削除 length($0) > 0 && $0 !~ /^[ ¥t]+$/ {print $0} length($0) > 0 && $0 !~ /^[ ¥t]+$/ length($0) && !/^[ ¥t]+$/ NF
  • 10. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) $0$0 以外以外以外以外をををを表示表示表示表示するするするする場合場合場合場合はははは以外以外以外以外をををを表示表示表示表示するするするする場合場合場合場合はははは?? • AWK は破壊的に値が代入される • 常に代入は「真」になる • つまり $0 に欲しいものを代入すればいい
  • 11. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) $1$1 をををを表示表示表示表示するするするするをををを表示表示表示表示するするするする {print $1} {$0 = $1; print $0} $0 = $1
  • 12. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) 置換置換置換置換だってできちゃうだってできちゃうだってできちゃうだってできちゃう置換置換置換置換だってできちゃうだってできちゃうだってできちゃうだってできちゃう {sub(/RegExp/, "STR", $0); print $0} sub(/RegExp/, "STR") || 4 Point! • sub() の戻り値は置換された個数 • 1 だと l なのか | なのか I なのか分かりづらいので 4 が好まれるみたい
  • 13. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) 区切区切区切区切区切区切区切区切 (OFS)(OFS) をををを表示表示表示表示するするするするをををを表示表示表示表示するするするする BEGIN {OFS="¥t"} {print $1} $ awk -v OFS="¥t"{$1 = $1; print $0} $ awk -v OFS="¥t" '$1 = $1' Point! • これを「フィールドの再構成」といいます
  • 14. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) 改行改行改行改行改行改行改行改行 (ORS)(ORS) をををを変更変更変更変更するにはするにはするにはするにはをををを変更変更変更変更するにはするにはするにはするには?? BEGIN {OFS = "¥n¥n"} {print $0} BEGIN {OFS = "¥n¥n"} 4 Point! • print $0 は printf("%sOFS", $0) なので、再構成が不要 ORS = "¥n¥n"
  • 15. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) みんなみんなみんなみんな大好大好大好大好ききききみんなみんなみんなみんな大好大好大好大好きききき FizzBuzzFizzBuzz $ seq 100 | ¥ awk '$0=($0%15)?($0%5)?($0%3)?$0:"Fizz": "Buzz":"FizzBuzz"'
  • 16. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) head, tailhead, tail はははははははは?? NR <= 10 headhead $ tac | awk 'NR <= 10' | tac tailtail Point! • そもそも awk で tail なんか作ってはいけない • shell と awk を合わせて活用すべし
  • 17. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) まとめまとめまとめまとめまとめまとめまとめまとめ • 資源の有効活用 (エコ活動) • 頭の体操になる (ボケ防止) • awk だけで記述できない (Shell の勉強もできる) • さぁ、みんなも今日からアクションレス・プログラミングを しよう!
  • 18. Japan GNU AWK Users' Club gauc.no-ip.org USP 友の会総会 (2011/10/28) 最後最後最後最後にににに最後最後最後最後にににに • 「日本 GNU AWK ユーザー会」は「USP 友の会」と友 好団体になります? • Shell と awk の融合による無限の可能性に乞ご期 待? • http://gauc.no-ip.org/gawk-users-jp/ Point! • ただし「日本 GNU AWK ユーザー会」と契約しても魔法少女にはなれません