rb のサンプル
rb のインストールは次コマンドを実行
curl https://raw.githubusercontent.com/thisredone/rb/master/rb -o /usr/local/bin/rb && chmod +x ${USER_BIN_PATH}/bin/rbcp .rbrc ~/STDINを配列として受け取り、 rb コマンドの引数を配列に続くメソッドチェーンとして実行する。
例えば seq 5 の標準出力を受け取ると、
[ '1\n', '2\n', '3\n', '4\n', '5\n' ]の配列として受け取る。
その後 rb drop 1 などとすると、
[ '1\n', '2\n', '3\n', '4\n', '5\n' ].drop(1)をしたことになる。
-l オプションを付与すると一行ごとに rb コマンドの引数を実行する。
感覚的には sed コマンドに近い。
ex)
$ ls -l | rb -l 'upcase'
TOTAL 32
-RW-R--R-- 1 YASUHIROKI STAFF 1067 11 27 02:21 LICENSE
-RW-R--R-- 1 YASUHIROKI STAFF 2303 11 27 02:41 README.MD* のような演算子や [] といった記号は self を使えば呼び出せる。
$ seq 5 | rb -l 'self*10'
1111111111
2222222222
3333333333
4444444444
5555555555もちろん send でもいい。
$ seq 5 | rb -l 'send(:*, 10)'
1111111111
2222222222
3333333333
4444444444
5555555555alias odd="rb 'each_slice(2).map(&:first)'"
alias even="rb 'each_slice(2).map(&:pop)'"ex)
$ seq 10 | odd
1
3
5
7
9
$ seq 10 | even
2
4
6
8
10alias minmax="rb 'minmax'"ex)
$ seq 10 | minmax
1
9alias numsum="rb 'map(&:to_i).inject(:+)'"ex)
$ seq 10 | numsum
55
alias strsum="rb 'map(&:chomp).inject(:+)'"ex)
$ seq 10 | strsum
12345678910alias dup="rb -l '[self, self].join(\"\t\")'"ex)
$ seq 10 | dup
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10alias csv2tsv="rb -l 'CSV.parse(self)[0].join(\"\t\")'"ex)
$ cat s.csv
a,b,c,d
a b,c,d,e
"a,b",c,d,e
$ cat s.csv | csv2tsv
a b c d
a b c d e
a,b c d e