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
330
ワンライナーに便利なコマンド
シェル芸勉強会福岡サテライトで話そうと思ったが、時間が無くてお蔵入りしたスライド。ワンライナーが書きやすいコマンド、というかプログラミング言語について紹介。
papiron
October 26, 2019
Tweet
Share
More Decks by papiron
See All by papiron
第45回シェル芸勉強会へようこそ
papiron
0
510
第44回シェル芸勉強会へようこそ
papiron
0
310
第38回シェル芸勉強会へようこそ
papiron
0
390
第37回シェル芸勉強会へようこそ
papiron
0
360
第29回シェル芸勉強会へようこそ
papiron
0
640
第28回シェル芸勉強会へようこそ
papiron
0
1k
テキストデータの連結
papiron
0
1k
第27回シェル芸勉強会へようこそ
papiron
0
610
仮想端末tmux始めました
papiron
0
690
Other Decks in Programming
See All in Programming
APIのない大学ログインWebサービスをWKWebViewとJavaScriptでアプリ化した話
akidon0000
1
330
最古の関数型言語「Lisp」ことはじめ / lisp_in_kamiyama
uhooi
1
190
Play Billing Library 7.0.0 変更点まとめ@potatotips#88
kako351
0
160
Clean Architecture by TypeScript & NestJS
ryounasso
0
150
はしめてのプログラミングとロボット制御
watawatavoltage
0
290
Mastering Developer Experience: A Roadmap for Success 【開発生産性Conference 2024】
findyinc
1
380
最近追加した型の紹介とその振り返り
aki19035vc
0
170
Javaの現状2024夏 / Java current status 2024 summer
kishida
4
1.4k
Product Management LT会_クアンド新家
shinshin
0
210
CSC307 Lecture 12
javiergs
PRO
0
220
コード生成を伴うLLMエージェント - 2024.07.18 Tokyo AI
smiyawaki0820
11
4.1k
AWSでゲームサーバーを運用! Amazon GameLiftのお話
iriikeita
0
200
Featured
See All Featured
How to name files
jennybc
67
96k
From Idea to $5000 a Month in 5 Months
shpigford
377
46k
We Have a Design System, Now What?
morganepeng
46
7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
652
58k
Designing Experiences People Love
moore
136
23k
How GitHub Uses GitHub to Build GitHub
holman
471
290k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
19k
Making Projects Easy
brettharned
111
5.7k
Building Flexible Design Systems
yeseniaperezcruz
323
37k
Optimising Largest Contentful Paint
csswizardry
18
2.6k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
357
18k
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Λ͏ར • େମೖ͍ͬͯΔ • ՃΠϯετʔϧෆཁͳ߹͕ଟ͍ • ॲཧ͕ߴ • େنͳςΩετσʔλͷॲཧʹ