- 締切済み
改行のないテキストファイルに改行コードをつけたい
いつもお世話になっています。 perlで困っていることがあるので、質問させてください。 大容量のテキストファイルを指定バイトで改行したいのですが、 どういった方法があるのでしょうか。 具体的には100000バイト近くあるファイルを200バイトごとに区切りたいのです。syswriteで何とかなるのかな?と思って試行錯誤しているのですが、 ファイルの末尾に1個改行が入るだけで、思ったような挙動をしてくれません。 正直かなりこまっているので、何かヒントをいただけないでしょうか。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- sakusaker7
- ベストアンサー率62% (800/1280)
一行野郎で。 perl -i.bak -E 'BEGIN{$/=\200};while(<>){say $_}' 対象ファイル マルチバイト文字の泣き別れなどはdon't careです。 5.10 頼前のバージョンであるなら、-E を -e に変え、say を print $_, "\n" にしてください。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
日本語だとして、 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)
単純に「200バイト読み込んで『改行を付けて』出力する」だけでいいんじゃないの? 今どんなプログラムになってますか?