📋
rfコマンドの実例: ソートする
実例: ソートする
ファイルの中身やコマンドの結果をソートして表示したいことがあります。RubyにはArray#sortがありますが、テキストフィルタの場合レコードはArrayにはならないので使えません。
そこで、--slurp(-s)オプションを使用します。このオプションはすべてのレコードを1つのArrayにまとめてレコードとするオプションです。
具体例を見てみます。
price-list.txt
128 Mango
420 Apple
315 Melon
307 Banana
512 Orange
sortしてみますが、前述のとおり意図した結果にはなりません。
> rf sort price-list.txt
Error: undefined method 'sort' for String
-sオプションを指定し、値段(1列目)でソートしてみます。
> rf -s sort price-list.txt
128 Mango
307 Banana
315 Melon
420 Apple
512 Orange
-sオプションとsortメソッドを組み合わせることで値段(1列目)でソートされました。
任意のカラムでソートする
今度は名前(2列目)でソートしてみます。Enumerator#sort_byを使うとすんなり記述できます。
> rf -s 'sort_by{|i| i.split[1] }' price-list.txt
420 Apple
307 Banana
128 Mango
315 Melon
512 Orange
名前(2列目)でソートされました。
Discussion