2012/03/08

csvをmapping

こういうCSVがあるとき
$ cat sample.csv
a,b,c
1,2,3
10,20,30
100,200,300
1,2,3
10,20,30
100,200,300
1,2,3
10,20,30
100,200,300
1,2,3
10,20,30
100,200,300https://gist.github.com
1,2,3
10,20,30
100,200,300
このように
$ cat sample.csv | csvremap sample.js
a,b,c
1,2,3
foo,hoge,30
bar,200,300
1,2,3
foo,hoge,30
bar,200,300
1,2,3
foo,hoge,30
bar,200,300
1,2,3
foo,hoge,30
bar,200,300
1,2,3
foo,hoge,30
bar,200,300
となる、というだけのコマンド。jsonってのがなんともアレだけど、動けばいいんです動けば。わりと活躍するかもしれん。

sample.jsはこんな感じ
$ cat sample.js
 {"a":{
         "10":"foo"
       , "100":"bar"
      }
, "b":{
        "20":"hoge"
      }
}
cut,sort,uniqなんかのコマンドと相性いいかも(そらそうだろうな)。
$ cat sample.csv | csvremap sample.js | tail -n +2 | sort -nr | uniq
1,2,3
foo,hoge,30
bar,200,300
で、こうやってmap系のコマンド作ると絶対reduce系のコマンド欲しくなるな(笑)

ソース

こちら。gauche。 いやー、やっぱS式っていいですね。人にやさしい脳にやさしい。

追記

jsonを標準入力から受け取るようにしてたけど、引数の順序を変えてCSVを標準入力から受け取るようにした。どう考えてもCSVの方が加工されてわたってくることが多いもんな。使ってて不便だった。

プログラミングGauche

0 件のコメント:

コメントを投稿