• 締切済み

改行のないテキストファイルに改行コードをつけたい

いつもお世話になっています。 perlで困っていることがあるので、質問させてください。 大容量のテキストファイルを指定バイトで改行したいのですが、 どういった方法があるのでしょうか。 具体的には100000バイト近くあるファイルを200バイトごとに区切りたいのです。syswriteで何とかなるのかな?と思って試行錯誤しているのですが、 ファイルの末尾に1個改行が入るだけで、思ったような挙動をしてくれません。 正直かなりこまっているので、何かヒントをいただけないでしょうか。 よろしくお願いいたします。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

一行野郎で。 perl -i.bak -E 'BEGIN{$/=\200};while(<>){say $_}' 対象ファイル マルチバイト文字の泣き別れなどはdon't careです。 5.10 頼前のバージョンであるなら、-E を -e に変え、say を print $_, "\n" にしてください。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

日本語だとして、 fold_pl http://www.srekcah.org/~utashiro/perl/scripts/fold_pl/ を使うのが普通です。 require 'fold.pl'; #???????????????略# while (length($str)) { (my $folded, $str) = fold($str, $bytes); print $folded, "\n"; } 半角カタカナを含むとどうなるかはためとていません。処理前に半角カタカナ→全角カタカナの変換をしておく。  なお、使い方はリンクをご確認ください。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

単純に「200バイト読み込んで『改行を付けて』出力する」だけでいいんじゃないの? 今どんなプログラムになってますか?

関連するQ&A