質問: ### 前提・実現したいこと 初めて質問させていただきます。 cshで以下のようなバッチを作成したいと考えております。 datファイル(sjis)を読み込み、機種依存文字があったら適当な文字に変換するといったものです。 [例] ・aaa.dat 20(文字コード 0x8753) ↓ **(文字コード 0x2a) このような場合どうしたらよいでしょうか? ### 試したこと perl -pi -e 's/[1-20]/*/g' ファイル名 を実行したところ 20 リットル (株) VII 鉄道 ↓ ** *梶@*Z ・道 となってしまい、指定した20以外も変換されてしまいました。 また他にも正規表現で perl -pi -e 's/[\x87\x40-\x87\x53]/*/g' ファイル名 などもやってみましたが、正規表現した箇所以外が変換されてしまいうまくいきませんでした。 ### 補足情報(言語/FW/ツール等のバージョンなど) サーバのOSはSunOS 5.10です。 システムの関係上シェルはcshしか利用できません。 また、sedコマンドはオプションiが使用できないため、perlコマンド(言語のperlではないです)を使用しています。 以上です。 宜しくお願い致します。
回答: 案1:Perlで日本語にちゃんと対応したプログラムにする。utf-8に変換して処理してcp932に変換して出力。ソース中に日本語を書くので、`use utf-8;`も必要。 案2:範囲指定を使わない。 `perl -pi -e 's/1|2|・・・|19|20]/*/g' ファイル名 案3:Rubyなどマルチリンガルな言語を使う