Perlワンライナーの「-i」オプションで入力元ファイルを処理
Perlのワンライナーは超便利ですが、今日は「-i」を使いまくり。
「-i」はパッケージを落としてきたら、パッケージ内の複数のソースコード中に書き換えなきゃなおらないバグを見つけてしまった、みたいなときに便利。
ヘルプの「-i」オプションに関する説明には「file in place」というフレーズがあるけど、これは「file existingand ready to be used」という意味です。ロングマン英英辞典に書いてありました。そんな意味でplaceを使ったことなかったです。
それはさておき、こんな感じで「-i」を使うと、処理結果の出力先が入力元ファイルになります。
$ perl -i -pe "s/正規表現/置換後の文字/" 入力元ファイル
入力元ファイルにはワイルドカードも使えるので、カレントディレクトリのcファイルを全て入力に使うなら「./*.c」と書けば良いです。
さらに以下のように「-i」オプションの引数に文字列を与えると、その文字列を入力元ファイル名の末尾につけたファイル名でバックアップをとり、その後で入力ファイルを処理します。
$ perl -i.bak -pe "s/正規表現/置換後の文字/" 入力元ファイル
この例だと、なんとか.bakファイルができあがって、入力元ファイルには処理内容が適用されます。
Perl便利だなぁ。
関連商品
初めてのPerl 第5版






