Nodeでワンライナー

  • 2
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Nodeで標準入力を処理するワンライナーがしたいなと思ったので、やってみました。Node5.0.0使用。

基本

$ echo 'test' | node -e "var c='';process.stdin.on('readable',()=>{c+=process.stdin.read()});process.stdin.on('end',()=>{console.log('c='+c)})"
c=test
null

な、長い…
ですが、stdinのreadableイベントとendイベントをなんとかすればワンライナーできることがわかりました。

CSVの1カラム目を切り出す

下記のCSVファイルの1カラム目を切り出したい。

test.csv
col11,col21
col12,col22
$ cat test.csv | node -e "var c='';process.stdin.on('readable',()=>{c+=process.stdin.read()});process.stdin.on('end',()=>{c.split('\n').forEach((e)=>{e.split(',').forEach((e,i)=>{if(i==0){console.log(e)}})})})"
col11
col12
null

Nodeでワンライナーするコツは、自分が今どの括弧の中にいるのかというのを常に把握し続けることだと理解しました。ふえええ…