ワンライナーは、コマンドラインから ruby を実行するときに、1 行だけコードを入力して簡単な処理を行うものです。
あるコマンドの出力をさくっと加工するのに適しています。
$ cat data.txt
AAA 100 xxx
BBB 200 yyy
CCC 300 zzz
$ cat data.txt | ruby -ane "puts $F[2]"
xxx
yyy
zzz
上記のように、テキストファイルの内容をそのままワンライナーに渡すのであれば、リダイレクトで入力することもできます。
こちらの方が cat コマンドなどに依存しないのでよいかもしれません。
$ ruby -ane "puts $F[2]" < data.txt
オプションの意味:
-a: autosplit mode(各行の $_ が分割されて $F に格納される)-n: 各行を処理する(内部で while gets() ループが実行される)-e: 後ろにコマンドを直接記述していることを示す-n オプションを付けて各行を処理する場合は、Awk のように、最初に一度だけ実行する BEGIN ブロックや、最後に一度だけ実行する END ブロックなどを利用できます。
$ ruby -ane "BEGIN{$a=0}; $a+=$F[1].to_i; END{puts $a}" < data.txt
600