Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
AWKへの愛を語る Aug. 24th, 2024 kanazawa.rb #144 Satoru Takeuchi X: satoru_takeuchi 1
Slide 2
Slide 2 text
はなすこと ● プログラミング言語AWKへの私からの愛のメッセージを語る 2
Slide 3
Slide 3 text
はなすこと ● プログラミング言語AWKへの私からの愛のメッセージを語る ● アイスブレイク ○ AWK知ってる人は挙手! 3
Slide 4
Slide 4 text
はなすこと ● プログラミング言語AWKへの私からの愛のメッセージを語る ● アイスブレイク ○ AWK知ってる人は挙手! ○ AWK使ったことある人は挙手! 4
Slide 5
Slide 5 text
AWKとは ● 1977年にAT&Tベル研究所で生まれた ○ もう強そうなニオイが漂っている ● 手早くテキスト処理をするための言語 ○ 基本は1行ごとにプログラムを適用して処理する ○ 詳しくは後述 5
Slide 6
Slide 6 text
サンプル入力 ● 1行1レコード ● フィールドはtabで区切っている ● 第一フィールドがCPUベンダ、第二フィールドがプロセッサの名前 6 $ cat input.txt amd ryzen intel pentium amd athlon transmeta crusoe intel core amd opteron
Slide 7
Slide 7 text
第1フィールドを出力 7 $ awk '{print $1}' input.txt amd intel amd transmeta intel amd
Slide 8
Slide 8 text
第2フィールドを出力 8 $ awk '{print $2}' input.txt ryzen pentium athlon crusoe core opteron
Slide 9
Slide 9 text
ベンダがIntelのプロセッサの数を出力 9 $ awk '$1=="intel"{sum++}END{print sum}' input.txt 2
Slide 10
Slide 10 text
それ、他の言語でもできるよ…? ● 例: Rubyで第2フィールドを表示する場合 10 $ ruby -e 'ARGF.each do |l| puts l.chomp().split("\t")[1] end' input.txt ryzen …
Slide 11
Slide 11 text
それ、他の言語でもできるよ…? ● 例: Rubyで第2フィールドを表示する場合 ● ちょっと長いかな…(個人の感想) ○ AWK: 10文字 ○ Ruby: 50文字 ● 他の言語でも似たり寄ったり 11 $ ruby -e 'ARGF.each do |l| puts l.chomp().split("\t")[1] end' input.txt ryzen …
Slide 12
Slide 12 text
📝: RubyはAWKっぽく書ける構文もある ● Rubyで第2フィールドを表示する場合 ● オプションの説明 ○ -n: 一行ごとに-eの後の引数を評価する ○ -a: フィールドを自動的にいいかんじに分割して配列 $Fに入れる 12 $ ruby -nae 'puts $F[1]' input.txt ryzen pentium …
Slide 13
Slide 13 text
📝: RubyはAWKっぽく書ける構文もある ● Rubyで第2フィールドを表示する場合 ● オプションの説明 ○ -n: 一行ごとに-eの後の引数を評価する ○ -a: フィールドを自動的にいいかんじに分割して配列 $Fに入れる ● プログラム(-eの引数)は10文字だがオプション含めると14文字 ○ まだ脊髄で書けない (個人の感想) 13 $ ruby -nae 'puts $F[1]' input.txt ryzen pentium …
Slide 14
Slide 14 text
AWKの使いどころ ● 1行1レコードのテキストを脊髄反射で処理したい場合 ● 数行をひとまとめとしたレコードが繰り返されるテキスト処理もなんとか ● それ以外は全部他の言語でいいと思う 14 name: foo desc: bar name: hoge desc: huga
Slide 15
Slide 15 text
プログラミング言語AWK第二版に全てが書かれている ● 言語作者達が書いた ● 全機能を網羅 ● 最新機能のUnicode,CSV対応もカバー ● 作られた経緯、その後の発展についての記述も 15
Slide 16
Slide 16 text
まとめ ● AWKというプログラミング言語がある ● 古臭いけど便利 ● ワンライナーを脊髄でプログラミングできる 16