いちばん失敗した人決定戦

複数のテキストファイルがあるのですが、その中からBOMが不可されているテキストファイルを知りたいのです。

できればWindowsではなく、Linux上でできるといいのですが、grepなどで検索することはできるのでしょうか。ffefという2バイトを含むということでいいと思ったのですが、それをどのようにして指定してやればいいのでしょうか。

A 回答 (1件)

BOMは7種類あるようです。


http://www.atmarkit.co.jp/fxml/rensai/w3cread37/ …

こんな感じでどうでしょう?

#!/usr/local/bin/perl

@bom = (
 chr(0x00).chr(0x00).chr(0xFE).chr(0xFF),
 chr(0xFF).chr(0xFE).chr(0x00).chr(0x00),
 chr(0x00).chr(0x00).chr(0xFF).chr(0xFE),
 chr(0xFE).chr(0xFF).chr(0x00).chr(0x00),
 chr(0xFE).chr(0xFF),
 chr(0xFF).chr(0xFE),
 chr(0xEF).chr(0xBB).chr(0xBF)
);

#// カレントフォルダオープン
opendir(DIR, './') or die;
@files = sort readdir(DIR);
closedir(DIR);

foreach (@files) {
 if(-f $_){
  open(FILE, $_) or die;
  $dat = <FILE>;
  for(my $i = 0; $i <= $#bom; $i++){
   if(index($dat, $bom[$i]) == 0){
    print "$_\n";
    last;
   }
  }
  close(FILE);
 }
}
#見やすいように、全角スペースが入ってますので、TABなどに置換してから実行してください。

参考URL:http://www.atmarkit.co.jp/fxml/rensai/w3cread37/ …
    • good
    • 0
この回答へのお礼

ありがとうございます!うまく抽出することができました。

お礼日時:2007/01/24 08:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!