Upgrade to Pro — share decks privately, control downloads, hide ads and more …

知って得するかもしれないテキスト処理コマンドの話 / A story about text ...

知って得するかもしれないテキスト処理コマンドの話 / A story about text processing commands that you might get to know

Avatar for Ryo Shibayama

Ryo Shibayama

February 27, 2015
Tweet

More Decks by Ryo Shibayama

Other Decks in Technology

Transcript

  1. join  の使⽤用例例 a.txt  には  ユーザ  ID,  課⾦金金額,  戦闘⼒力力  の順で⼊入ってる  

    b.txt  には  ユーザ  ID,  ユーザ名  の順で⼊入ってる   join  -‐‑‒a1  -‐‑‒eʼ’-‐‑‒ʼ’  -‐‑‒oʼ’0  1.2  1.3  2.2ʼ’  <(sort  a.txt)  <(sort  b.txt)
  2. プロセス置換  |  知ってる? <(sort  a.txt)   bash  や  zsh  の機能

      sort  済みのテンポラリファイルを作 る必要がなくなる
  3. プロセス置換  |  知らない これを知るまで   cat  a.txt  |  sort  >

     a_̲sorted.txt   無駄なファイル量量産してた
  4. 他の集合演算 和集合  A∪B   cat  A  B  |  sort  |

     uniq   積集合  A∩B   cat  A  B  |  sort  |  uniq  -‐‑‒d   join  A  B
  5. tsv  や  csv  に  query  投げたい あるんです   q  -‐‑‒

     Text  as  Data   https://github.com/harelba/q   q  って!ググラビリティ低すぎ
  6. 試しに使ってみる %  seq  1  1000  |  q  "select  avg(c1),sum(c1)  from

     -‐‑‒"   500.5  500500 c1というのが、カラムの1番⽬目という意味なので、   avg(c1)で、1〜~1000の総和の平均   sum(c1)で、1〜~1000の総和   がちゃんと出てますね
  7. 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
  8. 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