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
ワンライナーに便利なコマンド
Search
papiron
October 26, 2019
Programming
0
340
ワンライナーに便利なコマンド
シェル芸勉強会福岡サテライトで話そうと思ったが、時間が無くてお蔵入りしたスライド。ワンライナーが書きやすいコマンド、というかプログラミング言語について紹介。
papiron
October 26, 2019
Tweet
Share
More Decks by papiron
See All by papiron
第45回シェル芸勉強会へようこそ
papiron
0
520
第44回シェル芸勉強会へようこそ
papiron
0
320
第38回シェル芸勉強会へようこそ
papiron
0
410
第37回シェル芸勉強会へようこそ
papiron
0
370
第29回シェル芸勉強会へようこそ
papiron
0
670
第28回シェル芸勉強会へようこそ
papiron
0
1k
テキストデータの連結
papiron
0
1k
第27回シェル芸勉強会へようこそ
papiron
0
630
仮想端末tmux始めました
papiron
0
710
Other Decks in Programming
See All in Programming
Android開発以外のAndroid開発経験の活かしどころ
konifar
2
570
『ドメイン駆動設計をはじめよう』中核の業務領域
masuda220
PRO
5
960
マイグレーションコード自作して File-Based Routing に自動移行!! ~250 ページの歴史的経緯を添えて~
cut0
1
260
What we keep in mind when migrating from Serverless Framework to AWS CDK and AWS SAM
kasacchiful
1
140
Rubyのobject_id
qnighy
6
1.3k
僕が思い描くTypeScriptの未来を勝手に先取りする
yukukotani
9
2.3k
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
1
250
仮想ファイルシステムを導入して開発環境のストレージ課題を解消する
segadevtech
2
500
ブラウザ互換の重要性 - あらゆるユーザーに価値を届けるために必要なこと
yamanoku
0
110
Understand the mechanism! Let's do screenshots tests of Compose Previews with various variations / 仕組みから理解する!Composeプレビューを様々なバリエーションでスクリーンショットテストしよう
sumio
3
440
オートマトン学習しろ / Do automata learning
makenowjust
3
120
1人で挑むSwiftコンパイラ 〜型システム入門編〜
s_shimotori
0
340
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
21
3k
Designing for humans not robots
tammielis
248
25k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Music & Morning Musume
bryan
46
6k
GraphQLの誤解/rethinking-graphql
sonatard
65
9.8k
How to name files
jennybc
75
98k
Raft: Consensus for Rubyists
vanstee
135
6.5k
Large-scale JavaScript Application Architecture
addyosmani
508
110k
Gamification - CAS2011
davidbonilla
79
4.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
How GitHub (no longer) Works
holman
310
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
401
65k
Transcript
ϫϯϥΠφʔʹศརͳ ίϚϯυ ˏpapiron
ࣗݾհ • Twitter: @papiron • ԬαςϥΠτ։࠵୲ • ΠϯϑϥΤϯδχΞͬΆ͍ • WebͳϓνΤϯδχΞͬΆ͍
• ϝϯυ͍͘͞σʔλॲཧ୲ • γΣϧͱRubyͱPHP
γΣϧܳͱawk • ߦྻࢦͳσʔλͷѻ͍ • ֤छूܭॲཧ • ܭࢉจࣈྻॲཧ AWKΛ͏͜ͱ͕ଟ͍ॲཧ
awkͷศར͞ • ೖྗ܁Γฦ͠ʹؔ͢Δهड़ෆཁ • IO͔Βreadͱ͔͕ෆཁ • ΞΫγϣϯຖߦ࣮ߦ • ύλʔϯʹΑΔ݅ࢦఆ •
ifߏจΛ͏ػձ͕ݮΔ • ศརͳ֤छม • ϑΟʔϧυมʢ$0ɺ$1ɺɺɺʣ • ΈࠐΈมʢNRɺFNRɺNFͳͲʣ ϫϯϥΠφʔΛॻ͖͍͢ཁૉ͕ଟ͍
awkͬΆ͘ॻ͖͍ͨ ଞͷݴޠͰ awkϥΠΫͳϫϯϥΠφʔΛॻ͖͍ͨ PerlͱRubyͰग़དྷΔ
RubyͷawkϞʔυ • ΦϓγϣϯͰawkϥΠΫͳϞʔυʹ • -n ίʔυΛຖߦ࣮ߦ • -a ࣗಈϑΟʔϧυׂʢ$Fʣ •
-l ߦ͔ΒվߦจࣈΛऔΓআ͘ • -F ϑΟʔϧυ۠Γจࣈࢦఆ • ΈࠐΈมʢ$.ͳͲʣ • -rΦϓγϣϯͰϥΠϒϥϦಡΈࠐΈʢcsvͳͲʣ • BEGIN{}ͱEND{}͕͑Δ
$ echo 0 1 2 | ruby -alne 'puts $F[1]'
1 $ cat data.txt user01,175,80 user02,170,65 user03,182,85 $ cat data.txt | ruby -F, -alne 'puts $F[1]' | xargs 175 170 182 $ cat data.txt | ruby -F, -alne 'BEGIN{a=0;b=0}; a+=$F[1].to_i;b+=$F[2].to_i; END{print "ฏۉ:#{a.to_f/$.} ମॏฏۉ:#{b.to_f/$.}"}' ฏۉ:175.66666666666666 ମॏฏۉ:76.66666666666667 RubyͷawkϞʔυ࣮ྫ
ϫϯϥΠφʔಛԽίϚϯυ • rbίϚϯυ • https://github.com/thisredone/rb • RubyͷϫϯϥΠφʔಛԽ൛ϥούʔ • opyίϚϯυ •
https://github.com/ryuichiueda/opy • PythonͰϫϯϥΠφʔπϥΠ • Πϯσϯτࣗମ͕จ๏ͩͬͨΓ • ্ాձ࡞ͷϥούʔ
rbίϚϯυ • ඪ४ೖྗ͔Βͷσʔλ͕Ϩγʔό • ϝιου͕ॻ͚Δ • 2ͭͷϞʔυ • linesϞʔυ •
ೖྗશମΛEnumeratorͱͯ͠ѻ͏ • lineϞʔυʢ-lΦϓγϣϯʣ • 1ߦͣͭStringͱͯ͠ॲཧ͢Δ
rbίϚϯυ࣮ྫ # ϨγʔόEnumerator $ seq 3 | rb 'self.inspect' #<Enumerator:
#<IO:<STDIN>>:each_line> $ seq 100 | rb grep '/0$/' | xargs 10 20 30 40 50 60 70 80 90 100 # rubyͱൺֱ $ seq 100 | ruby -e 'puts STDIN.each_line.grep(/ 0$/)' | xargs 10 20 30 40 50 60 70 80 90 100 $ seq 10 | rb 'map{|i|i.to_i}.sum' 55 linesϞʔυ
rbίϚϯυ࣮ྫ # Ϩγʔόೖྗ֤ߦͷจࣈྻ $ seq 3 | rb -l 'self.inspect'
| tr '\n' ' ' "1" "2" "3" $ echo 0,1,2 | rb -l 'split(",")[1]' 1 # Rubyͱൺֱ $ echo 0,1,2 | ruby -ne 'puts $_.split(",")[1]' 1 $ seq 100 | xargs -n 10 | rb -l split.last | xargs 10 20 30 40 50 60 70 80 90 100 lineϞʔυ
rbͰग़དྷͳ͍͜ͱ • Φϓγϣϯ͑ͳ͍ • -FͰ۠Γจࣈࢦఆग़དྷͳ͍ • -rͰϥΠϒϥϦಡΈࠐΈग़དྷͳ͍ • ϑΟʔϧυͷࣗಈׂ •
BEGINͱEND
opyͷࢿྉ PythonΛίϚϯυϥΠϯͰ͍͍ͨͷͰopyͱ͍͏ίϚϯυΛ࡞ͬͨ https://b.ueda.tech/?post=20190908_opy ࣗ࡞ίϚϯυʢopyʣΛbrewͱsnapʹରԠͨ͠ https://b.ueda.tech/?post=20190911_opy opyʹjoin, dropjoinΛ࣮ https://b.ueda.tech/?post=20190916 opyͰPythonͷSciPyͱNumPyΛϫϯϥΠφʔͰ͏࣮ݧ https://b.ueda.tech/?post=20190929_opy
্ా͞ΜϒϩάΛࢀর
͋͑ͯawkΛ͏ར • େମೖ͍ͬͯΔ • ՃΠϯετʔϧෆཁͳ߹͕ଟ͍ • ॲཧ͕ߴ • େنͳςΩετσʔλͷॲཧʹ