コマンドラインオプション-peを指定して、特殊変数$_を書き換えるプログラムを与える。
$ ls -l total 2296 -rw-r--r-- 1 root wheel 753 9 24 2007 6to4.conf -rw-r--r-- 1 root wheel 515 9 24 2007 afpovertcp.cfg . . .
$ ls -l | ruby -pe '$_.upcase!' TOTAL 2296 -RW-R--R-- 1 ROOT WHEEL 753 9 24 2007 6TO4.CONF -RW-R--R-- 1 ROOT WHEEL 515 9 24 2007 AFPOVERTCP.CFG . . .
$ ls -l | ruby -ne 'puts split[0]' total -rw-r--r-- -rw-r--r-- . . .
-eオプションはコマンドラインで与えた文字列をスクリプトとして実行する。
-nあるいは-pを指定すると、コマンドラインで与えたコードがwhile gets; endで囲まれているように動作する。各行のデータは$_に格納される。
while gets # ... この部分の処理をコマンドラインに書く end
-pは、各ループ処理ごとに$_の値を出力する。-nでは自動的には出力されないので自分でputsなんかで出力する。
ファイル自身の内容を置き換えて処理したい場合は、
$ ruby -i.bak -pe '$_.upcase!' hoge.txt
のように-iオプションを使う。バックアップファイルを作成する必要がなければ-i.bakではなく単に-iとする。