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

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