• 締切済み

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

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

  • Perl
  • 回答数3
  • ありがとう数0

みんなの回答

  • 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

  • 改行のないテキストを指定バイトで改行したい

    質問したい内容は表題の通りですが、数十メガある膨大なテキストを 指定されたバイトで改行コードを入れたいです。(chompの逆をやりたい) syswriteでできるのかな?と思って試行錯誤しているのですが、うまくいきません。テキストは、半角数字+半角カタカナ+半角記号の混合です。 全角はありません。エンコードはUTF-8です。ずっとハマってるので、ヒントをいただけないでしょうか。(ちなみにPerl 5.10/ActivePerlが指定です。) よろしくお願いいたします。

  • 改行コードの入っていないテキストファイルが開けるテキストエディタは?

    1レコードが256バイトのテキストデータが格納されているファイルがあるのですが、このファイルには改行コードが入っていません。 テキストエディタにてファイルの中身を確認したいのですが、メモ帳ですときれいに表示できません。 1行256バイトで表示できるフリーのテキストエディタをどなたかご存知でしょうか。 ご存知の方がいらっしゃいましたら教えてください。 お願いします。

  • テキストファイルに改行コードを付加してレコードを分割したい。

    テキストファイルに改行コードを付加してレコードを分割したい。 MSDOSテキストファイルで、1レコードのサイズが128バイトのテキストファイルが あるのですが、レコード間に改行コードがありません。 レコード10件なら1280バイト 20件なら2560バイトのファイルです。 これを128バイトごとに改行コードを付加できるようなソフトはないでしょうか? ファイル分割ではなく、レコードの分割ができる物を探しています。 よろしくお願いします。

  • テキストファイルの最終行の改行コード削除

    お世話になります。 SQLコマンドを発行し、csvファイルを自動生成させるシェルスクリプトを作ったのですが、最終行にある改行コードを削除して欲しいとの指示を受けて、その方法を調査。試行錯誤しているのですがよい方法が見つかりません。 最終行にある改行コードのみを削除するにはどうしたら宜しいでしょうか。 ご教示頂ければ幸いです。 宜しくお願い致します。                                以上

  • バイナリファイルに改行コードを追加したい

    C言語でマルチバイト文字(全角文字)を含めたバイナリファイル(改行のないテキストファイル)に指定したバイト長ごとに改行コードを追加するにはどのようにしたら良いのでしょうか?。 漠然とですがfopen()とfread()などを使うんだろうと おもうのですが、読み込んだ文字数の計算方法がわかりません。 どなたかご教授お願いします。

  • 改行コードとテキストエンコーディングについてお伺い致します。

    改行コードとテキストエンコーディングについてお伺い致します。 あるデータファイルの改行コードは「Unix(LF)」, テキストエンコーディングは「UTF-8(BOMなし)」という指定があります。Mac Book (OS X 10.6.4)でテキストエディットで打ち込んだ物を使っているのですが,その指定に該当するのか、もし違うのであれば、どう修正したらよいかわかりません。ご教示いただけたら幸いです。

    • ベストアンサー
    • Mac
  • テキストファイル内の「誤改行」を修文したい!

    perl は初心者です。よろしくお願いします。 ★無名ハッシュを作り、リファレンスをハッシュに格納する方法を採用して、試行錯誤しています。 ファイル内容は、論理行の一行毎に行頭が ”AA” のように””で囲まれています。(例文後述) しかし、行の中には「誤改行」されて正常な行が分割されていて、改行され行頭が””で囲まれていない行が存在します。(正常な行が2分割され、前半部分と後半部分が別な行文となっている) この「誤改行」を、直前にある「元の正常な分割された前半の行文」と連結して、新たな正常な行としてファイルを修正し新規テキストファイルに書きこみたい。この際、分割されていた2個の「行文」は不要になったので、新規テキストファイルには書き込まない。 この修文作業が、途中まで出来ましたが最後の不要な行の削除が出来ないので、困っています。 ------------------------------------------------------------ 対象とするテキスト内容 (下記の行番号と文字列は例示です) 1. "ABCD",あいうえおかきくけこ123456789 XXXXXXXXXXXX 2. "EFGH", 3. さしすせそたちつてと9876543 XXXXXXXXXXXX # ←「誤改行」の行です。 4. "IGKL",なにぬねのはひふへほ123456789 XXXXXXXXXXX 5. "MNOP",まみむめもやいゆえよ987654321 XXXXXXXXXXX 6. "QRST", 7. らりるれろわいうえを123456789 XXXXXXXXX # ←「誤改行」の行です。 8. 9. ------------------------------------------------------------------ 期待する修文の出力結果 (行内容は、元の行番号の順番と違っても結構です) 1. "ABCD",あいうえおかきくけこ123456789 XXXXXXXXXXXX 2. "EFGH",さしすせそたちつてと9876543 XXXXXXXXXXXX 3. "IGKL",なにぬねのはひふへほ123456789 XXXXXXXXXXX 4. "MNOP",まみむめもやいゆえよ987654321 XXXXXXXXXXX 5. "QRST",らりるれろわいうえを123456789 XXXXXXXXX 6. 7. ----------------------------------------- 私作成したスクリプトの要約は、 # 対象ファイルを一行づつ読み込む. # 末尾の改行を削除 # 誤改行の場合を正規表現で探す。$ng_gyou に格納 # その他正常行は$ok_gyou, に格納する。 # $falag に誤改行の場合は0、正常な改行の場合は1を格納 # 誤改行の場合の行番号を$count_ng に、正常な改行の場合の行番号を$count_ok に、全部の行番号は$flag_1に格納する。 # 無名ハッシュを作り,リファレンスを $ref に格納する $ref = {'nomber' => $flag_1, 'ng' => $ng_gyou, 'ok' => $ok_gyou, 'ngcount' => $count_ng, 'okcount' => $count_ok, 'flag' => $flag_ok }; $WORD{$flag_1} = $ref; # nomber:$flag_1をキーにして,リファレンスをハッシュ:%WORDに格納 # このハッシュ「%WORDを」 読み込んで、処理しました。 foreach $flag_1 ( sort { $a <=> $b } keys %WORD) {    if($one->{ok} == 0) { ・・・・・・・・・・・・・・・・・ # 細部は、長くなるので省略します。( 誤改行の連結までは成功しましたが、・・・・・・??) 以上、質問内容が冗長になりましたが、どうか御教示下さい。

    • ベストアンサー
    • Perl
  • 複数行のテキストボックスを受け取って、改行させたい。

    複数行のテキストボックスを受け取って、改行させたい。 お世話になります。ASP.NET VB2005を使っています。 Byrefでテキストボックスと、ByValで何桁目で改行させたいかを受け取って、 テキストボックスの内容を指定桁数で改行を入れたいのですが、 どのようにすればいいのでしょうか? 1行目が何桁あるかを判断する。 指定された桁数以上あったら改行させる。 という事を実現したいと考えています。 以上です、宜しくお願い致します。

  • perlで読み込むテキストの文字コードは一般に何?

    Perl初心者です。 perlで簡単なソフトを作り、時々変化する情報をテキストファイルから読み込むようにしています。 昔は、Shift-jisでしたが、文字化け対策が嫌になり、UTF-8に統一しました。 皆様は、何を使われていますでしょうか? また、読み込みや出力には、そのファイルの文字コード指定していますか? 質問させていただいた動機について(無駄に長いです) 最近パソコン初心者の友達へ、プログラムを作ってあげたのですが、どうもうまく動かない。 設定ファイルに書いてある内容が何か合わないようです。 色々試行錯誤して、3日ほど悩んだ結果、相手のパソコンで編集(Vista)すると、BOMというものが付くことが分かり、とりあえず、それを削除することで無事動作致しました。 UTF-8であれば、文字コードなど気にせず万能だと思っていたのですが、これだけ悩まされると、UTF-8以外の方にもっと良い方法があるのではないかと思い質問させていただきました。

    • ベストアンサー
    • Perl
  • テキストエディタで改行コードを変更できません

    テキストエディタ「terapad」「秀丸」で改行コードを変更することができません。 開いたテキストファイルを別名保存で「LF」を指定して保存しても、再度開いた時にCR+LFに戻ってしまいます。 なにが原因でしょうか? バージョンはそれぞれ以下の通りです。 ▽テラパッド Ver.0.93 ▽秀丸 Ver.8.34 ▽Windows 7 Home Premium(Service Pack1)

専門家に質問してみよう