[ruby-list:39065] コマンドラインオプション

From: Ryutaro Amano <wn9r-amn@...>
Date: 2004-01-22 07:43:15 UTC
List: ruby-list #39065
天野と申します。
コマンドライン時の起動オプションが理解できません。
基本的なことだと思うのですが、よろしくお願いします。
改行文字の変換について過去ログを調べていて下記のものに出会いました。

----------------------------------------------------------------------------
---
入出力を binmode にして下さい。
ちなみに、ワンライナーだとこんな感じでしょうか。

(CR or CR + LF) --> LF
$ ruby -012l015pe 'BEGIN{$<.binmode;$>.binmode}' infile > outfile

(LF or CR + LF) --> CR
$ ruby -015l012pe 'BEGIN{$<.binmode;$>.binmode}' infile > outfile

LF --> CR + LF
$ ruby -l012pe 'BEGIN{$<.binmode;$>.binmode;$\="\015\012"}' infile > outfile

CR --> CR + LF
$ ruby -l015pe 'BEGIN{$<.binmode;$>.binmode;$\="\015\012"}' infile > outfile
----------------------------------------------------------------------------
---
リファレンスなどは読みましたので、
-0数字、-l、$\、-p、$<、などの個々の字義通りの意味はわかっているつもりですが、
全体の流れがわかりません。
例えば一番上の
(CR or CR + LF) --> LF
$ ruby -012l015pe 'BEGIN{$<.binmode;$>.binmode}' infile > outfile

ですが、
-0なので、入力レコードセパレータ$/を12=LFにして、-lで、$ を$/と同じ値に設定
しprint出力時に改行をつけ、
などと解釈するとその時点で既に逆のような気がします。出力側がLF=012ですよね。
結局煮詰まっています。
lの後ろに来る8進数の数字が、入力ファイルの改行コードに指定されるのでしょう
か? 個人的には、それだとまだ理解できやすい気がするのですが、しかし、-lのリ
ファレンスを見ると
----------------------------------------------------------------------------
-l
行末の自動処理を行います。まず、$\ を $/ と同じ値に設定し, printでの出力時に
改行を付加するようにします。それから, -n フラグまたは-pフラグが指定されてい
ると gets で読み込まれた各行の最後に対して String#chop!を行います。
----------------------------------------------------------------------------
とあります。結局迷路に入るようで理解できない。

出だしの「-012l015pe」を一つずつ分解するように教えていただけれるとありがたい
のですが。


Ryutaro Amano
wn9r-amn@asahi-net.or.jp

In This Thread

Prev Next