Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWKへの愛を語る
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Satoru Takeuchi
PRO
August 24, 2024
Technology
680
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWKへの愛を語る
kanazawa.rb #144のLT資料です
https://meetup.kzrb.org/144/
Satoru Takeuchi
PRO
August 24, 2024
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
62
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
83
あなたの知らないバージョン命名規則
sat
PRO
3
880
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
63
Machine Check Exception
sat
PRO
2
63
バイナリダンプの模様を読む
sat
PRO
0
88
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
85
114-ファイルのshallow_copy.pdf
sat
PRO
2
54
113-Btrfsのスナップショット.pdf
sat
PRO
0
40
Other Decks in Technology
See All in Technology
本番に近いテストをもっと手軽に - Postmanで広がるAPIテストの世界 / Expanding the World of API Testing with Postman
yokawasa
1
240
DGX Sparkを2台使って いろいろ動かす話
sonoda_mj
1
120
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
300
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
1
320
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
6
6k
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
620
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
3
120
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
2
1.9k
AIエージェントを雇う前に決める5つのこと
knishioka
1
150
APIセキュリティを組織で実現するには~注力する点と設計・実装に入れたい対策~
riiimparm
3
910
Claude Codeの体系的な理解と知識のフック
oikon48
10
6.6k
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
120
Featured
See All Featured
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
640
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Leo the Paperboy
mayatellez
8
2.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
エンジニアに許された特別な時間の終わり
watany
108
250k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
460
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
970
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
840
Unsuck your backbone
ammeep
672
58k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Transcript
AWKへの愛を語る Aug. 24th, 2024 kanazawa.rb #144 Satoru Takeuchi X: satoru_takeuchi
1
はなすこと • プログラミング言語AWKへの私からの愛のメッセージを語る 2
はなすこと • プログラミング言語AWKへの私からの愛のメッセージを語る • アイスブレイク ◦ AWK知ってる人は挙手! 3
はなすこと • プログラミング言語AWKへの私からの愛のメッセージを語る • アイスブレイク ◦ AWK知ってる人は挙手! ◦ AWK使ったことある人は挙手! 4
AWKとは • 1977年にAT&Tベル研究所で生まれた ◦ もう強そうなニオイが漂っている • 手早くテキスト処理をするための言語 ◦ 基本は1行ごとにプログラムを適用して処理する ◦
詳しくは後述 5
サンプル入力 • 1行1レコード • フィールドはtabで区切っている • 第一フィールドがCPUベンダ、第二フィールドがプロセッサの名前 6 $ cat
input.txt amd ryzen intel pentium amd athlon transmeta crusoe intel core amd opteron
第1フィールドを出力 7 $ awk '{print $1}' input.txt amd intel amd
transmeta intel amd
第2フィールドを出力 8 $ awk '{print $2}' input.txt ryzen pentium athlon
crusoe core opteron
ベンダがIntelのプロセッサの数を出力 9 $ awk '$1=="intel"{sum++}END{print sum}' input.txt 2
それ、他の言語でもできるよ…? • 例: Rubyで第2フィールドを表示する場合 10 $ ruby -e 'ARGF.each do
|l| puts l.chomp().split("\t")[1] end' input.txt ryzen …
それ、他の言語でもできるよ…? • 例: Rubyで第2フィールドを表示する場合 • ちょっと長いかな…(個人の感想) ◦ AWK: 10文字 ◦
Ruby: 50文字 • 他の言語でも似たり寄ったり 11 $ ruby -e 'ARGF.each do |l| puts l.chomp().split("\t")[1] end' input.txt ryzen …
📝: RubyはAWKっぽく書ける構文もある • Rubyで第2フィールドを表示する場合 • オプションの説明 ◦ -n: 一行ごとに-eの後の引数を評価する ◦
-a: フィールドを自動的にいいかんじに分割して配列 $Fに入れる 12 $ ruby -nae 'puts $F[1]' input.txt ryzen pentium …
📝: RubyはAWKっぽく書ける構文もある • Rubyで第2フィールドを表示する場合 • オプションの説明 ◦ -n: 一行ごとに-eの後の引数を評価する ◦
-a: フィールドを自動的にいいかんじに分割して配列 $Fに入れる • プログラム(-eの引数)は10文字だがオプション含めると14文字 ◦ まだ脊髄で書けない (個人の感想) 13 $ ruby -nae 'puts $F[1]' input.txt ryzen pentium …
AWKの使いどころ • 1行1レコードのテキストを脊髄反射で処理したい場合 • 数行をひとまとめとしたレコードが繰り返されるテキスト処理もなんとか • それ以外は全部他の言語でいいと思う 14 name: foo
desc: bar name: hoge desc: huga
プログラミング言語AWK第二版に全てが書かれている • 言語作者達が書いた • 全機能を網羅 • 最新機能のUnicode,CSV対応もカバー • 作られた経緯、その後の発展についての記述も 15
まとめ • AWKというプログラミング言語がある • 古臭いけど便利 • ワンライナーを脊髄でプログラミングできる 16