人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

BOM付きだと思われるファイルを grep したいのですが、うまくいきません。ruby 1.8.7 の正規表現もうまくできません。どうするといいのでしょうか?
下記に、hexdump の結果を載せています。最初のが普通のファイル、次がBOM付きっぽいファイルです。
やりたいことは対象ファイル内の数字 (例)width="1000" を width="800" のように変換して戻したいのです。対応している sed などがあるとうまくいくのでしょうか? OS は、CentOS release 5.5 です。

$ hexdump -C temp.1
00000000 6e 65 6b 6f 0a |neko.|
00000005
$ hexdump -C temp.2
00000000 ff fe 6e 00 65 00 6b 00 6f 00 0d 00 0a 00 |..n.e.k.o.....|
0000000e
再編集

●質問者: kaiketsu
●カテゴリ:コンピュータ インターネット
✍キーワード:00 BOM CentOS Fe ff
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Galapagos
●35ポイント

nkfコマンドを使ってBOM無しに変換した後、grepにパイプしてやるのがいいでしょう。


nkf -w ファイル名 | grep


2 ● fenstrial
●35ポイント

BOM付きが問題なのではなく、そのファイルがUTF-16であることが原因だと思います。


本来、環境の文字コード(LANG環境変数を参照)と異なる文字コードのテキストの場合、環境の文字コードに変換してから使用しなければなりません。


コマンドラインではnkfをパイプで使用し、rubyではkconvを用います。

http://www.ruby-lang.org/ja/man/html/Kconv.html

http://lab.urume.net/2005,1215,152.html


多くの文字コードはASCII文字はASCIIと同じコードになるため、ASCII(またはASCIIと互換性のあるコード)とみなして処理を行うことができる場合もあります。(UTF-8,EUC-JPなど。Shift-JISは文字化けの原因になります。)

UTF-16では、ASCIIの文字であってもASCIIとは異なるコードになるため、ASCIIとみなして処理を行うことができなのです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ