ジャズボーカル 松田オリビア圭子

ジャズボーカル 松田オリビア圭子のブログです。主にスケジュールのご案内を掲載します。

rubyでsedやawkの代わりに文字列置換

ふだんはRuby on Railsで開発をしているけれど、ruby単体で使うことって
あまりしていなかった。ちょっとした文字列置換は秀丸なんかでやっていたし。
でも今日はちょっとまとまった量のテキストを、数十種類の置換ルールにかける作業を
したくなって、昔UNIX環境で使いまくったawksedでやろうかと思ったけれど、
windows環境で(いちおうcygwinawkはあったけど)もろもろ思い出しながら
できるか調べながらやるのも手間だし、どのみちちょっとコストかけるなら
rubyでやろうとトライ。


ふだんはRailsのconfig/enviroment.rbに$KCODE = "UTF8"を指定していたから、
あとは文字コードのことは考えてなかった。

rubyスクリプトファイルを書いてコマンドラインから呼び出す場合、
スクリプトファイル内に日本語文字列(マルチバイトコード)があると、
その同じファイルの先頭にKCODE指定をしても無効(というかそれでは遅い)。
以下のようにコマンドラインで指定をするのが正しいのだった。

ruby -Ku xxxx.rb

(-Ku はUTF-8の場合。sjisなら-Ksとする)

さすがに文字列処理の得意なrubyだけあってスクリプト書くのには
便利なクラスメソッドがあって苦労しなかったんだけど、
コマンドラインrubyだけ使うときに文字コード指定どうするんだっけと
調べるのに以外と手間どったので、ちょっとメモ。