sedなどで巨大ファイル(約1GBぐらい)のバイナリの「5C5C」を「5C」に置換するなどの処理を行いたいのですが、

やり方(コマンドなど)を教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/08/12 18:40:42
  • 終了:2006/08/19 18:45:02

回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402006/08/13 00:10:25

ポイント60pt

http://perldoc.jp/docs/perl/5.6.1/perlrun.pod

http://perldoc.jp/docs/perl/5.6.1/perlvar.pod

5C がバイナリの16進表記であると仮定して、

# perl -p -i.back -e 's/\x5C\x5C/\x5C/g' FILENAME

でいけると思います。

FILENAME が変更するファイルで、実行後 FILENAME.back という名前でバックアップが取られます。

バックアップが必要なければ -i.back のオプションはいりません。

ただ、このままでは莫大な量のメモリを必要とする可能性が高いので、

# perl -p -i.back -e 'BEGIN { $/ = \"1024" }' -e 's/\x5C\x5C/\x5C/g' FILENAME

とすると最大 1024 バイトずつ読み込みます。

1024 という数値は適当なので実際には搭載メモリにあわせてもう少し大きい値を指定した方がよいでしょう。

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • Fedora13 着うたを作る @//メモ (PukiWiki/TrackBack 0.3) 2010-08-20 00:55:57
    はじめに 参考文献 はじめに † いままで、Nokia の NM705i を使っていた。この携帯電話は mp3 を着信音やアラームにすることができる 先日 NM705i が故障したので LG 電子の L-04B に交換
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません