ruby1.9のワンライナーと文字コード
pythonコードのインデントを2から4に変えるこんなことをやってみた。
$ find . -name "*.py" | xargs ruby -pe '$_.sub!(/^( )+/){|m| m*2}' -e:1:in `sub!': invalid byte sequence in UTF-8 (ArgumentError)
対象のファイルにutf-8のものとcp932にものが混在しているのはわかっているのでascii指定にする。
$ find . -name "*.py" | xargs ruby --encoding=ascii -pe '$_.sub!(/^( )+/){|m| m*2}' -e:1:in `sub!': invalid byte sequence in US-ASCII (ArgumentError)
がんばってascii-8bitを指定する。
$ find . -name "*.py" | xargs ruby --encoding=ASCII-8BIT -pe '$_.sub!(/^( )+/){|m| m*2}'
やっと成功。
(上記の例は危険なのでrubyのオプションから"-i"をわざと省いてあります。失敗する度にgit checkout -- .しているw)
有効なエンコードを探すにはこんな感じで。
$ ruby -e 'puts Encoding::list' | grep -i ascii ASCII-8BIT US-ASCII