Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

第87回PHP勉強会 LT 知って得するかもしれないテキスト処理コマンドのお話

2,609 views

Published on

第87回PHP勉強会 LT 知って得するかもしれないテキスト処理コマンドのお話

Published in: Engineering
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

第87回PHP勉強会 LT 知って得するかもしれないテキスト処理コマンドのお話

  1. 1. 知って得するかもしれない テキスト処理理コマンドのお話 @serima
  2. 2. ⾃自⼰己紹介  |  PHP歴 今年年で  8  年年⽬目   初めての  PHP  勉強会への参加   今後も頑張りたい
  3. 3. ビッグデータと僕 ソーシャルゲームの運⽤用   データ命   アクセスログ、課⾦金金ログ、戦闘ロ グ、カード取得ログ…
  4. 4. データのダンプ mysqldump   scp
  5. 5. TreasureData あらゆるログを  TreasureData  に集 約   これで取り出しやすくはなった
  6. 6. ディレクターさん 「せりまさん、こんなデータ取って ください」   「おk」
  7. 7. 巨⼤大なデータ いざ取り出してみると、数⼗十万〜~数 百万⾏行行になることはザラ   この規模のデータを  Excel  で開くと 死亡   なので、ある程度度サマリする必要が でてきます
  8. 8. サマリするためのスクリプト データ規模が⼤大きくなってくると PHP  つかって書くと超遅い
  9. 9. それ… UNIX  コマンドでできるよ
  10. 10. よく使うコマンド cat,  sort,  uniq,  wc,  grep,  awk,   diff,  cut,  sed
  11. 11. join ふたつのファイルの共通  key  で連結   ふたつのファイルは結合するフィー ルドで  sort  しておく必要がある
  12. 12. join  の使⽤用例例 a.txt  には  ユーザ  ID,  課⾦金金額,  戦闘⼒力力  の順で⼊入ってる   b.txt  には  ユーザ  ID,  ユーザ名  の順で⼊入ってる   join  -‐‑‒a1  -‐‑‒eʼ’-‐‑‒ʼ’  -‐‑‒oʼ’0  1.2  1.3  2.2ʼ’  <(sort  a.txt)  <(sort  b.txt)
  13. 13. プロセス置換  |  知ってる? <(sort  a.txt)   bash  や  zsh  の機能   sort  済みのテンポラリファイルを作 る必要がなくなる
  14. 14. プロセス置換  |  知らない これを知るまで   cat  a.txt  |  sort  >  a_̲sorted.txt   無駄なファイル量量産してた
  15. 15. 集合演算っぽいこと A  に含まれるが、B  に含まれない  ID   を出したい 1   2   3 1   3 2 A B ほしい結果
  16. 16. 差集合 diff  と  awk  でできるよ diff  <(sort  A)  <(sort  B)  |  awk  ʻ‘/^</{print  $2}ʼ’
  17. 17. 他の集合演算 和集合  A∪B   cat  A  B  |  sort  |  uniq   積集合  A∩B   cat  A  B  |  sort  |  uniq  -‐‑‒d   join  A  B
  18. 18. join  コマンド join  コマンドはとても便便利利だけど、 ふたつの引数しかとることができな い
  19. 19. tsv  や  csv  に  query  投げたい あるんです   q  -‐‑‒  Text  as  Data   https://github.com/harelba/q   q  って!ググラビリティ低すぎ
  20. 20. 試しに使ってみる %  seq  1  1000  |  q  "select  avg(c1),sum(c1)  from  -‐‑‒"   500.5  500500 c1というのが、カラムの1番⽬目という意味なので、   avg(c1)で、1〜~1000の総和の平均   sum(c1)で、1〜~1000の総和   がちゃんと出てますね
  21. 21. GROUP  BY  も使える %  cat  test.txt   Mike        10   John        1   Bob          8   Mary        19   Bob          15   Bob          20   Mike        2       %  q  "select  c1,  count(*),  sum(c2)  from  test.txt  group  by  c1"   Bob  3  43   John  1  1   Mary  1  19   Mike  2  12
  22. 22. JOIN  も使える %  cat  test1.txt   a1234      aa1   b1234      aa2   c1234      aa3   d1234      aa3   ! %  cat  test2.txt   1              a1234      bb1   2              a1234      bb2   3              b1234      cc1   4              c1234      dd3   5              e1234      NULL   ! %  q  "select  *  from  test1.txt  as  a  left  join  test2.txt  as  b  on  a.c1  =  b.c2"   a1234  aa1                1  a1234  bb1   a1234  aa1                2  a1234  bb2   b1234  aa2                3  b1234  cc1   c1234  aa3                4  c1234  dd3   d1234  aa3
  23. 23. ご清聴ありがとうございました ブログにこの事書いてるのでご興味 あればどうぞ   http://serima.co/blog

×