![非常に長い行と固定長レコードを扱える Linux テキスト エディター](https://rvso.com/image/1414641/%E9%9D%9E%E5%B8%B8%E3%81%AB%E9%95%B7%E3%81%84%E8%A1%8C%E3%81%A8%E5%9B%BA%E5%AE%9A%E9%95%B7%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%89%B1%E3%81%88%E3%82%8B%20Linux%20%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%20%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC%20.png)
ここで、かなり単純な問題があります。1 行の巨大なテキスト (約 150,000 文字) があります。改行はなく、固定長のフラット ファイル (つまり、プログラムによって生成されたファイルCOBOL
) なので、改行を入れるのは不便なだけでなく、ファイルに変更を加えようとする場合にまったく役に立ちません。
ほとんどのテキスト エディターは、そのくらい長い 1 行を処理するのに苦労します (less
気に入らない、Gedit
気に入らない、nano
気に入らない、vim
気に入らないと聞いた、など) が、実際には機能します。
私が扱っているデータに適したエディターについて、何か提案はありますか? たった 1 行ですが、それでも通常の長さの行を含む 1GiB 以上のテキスト ファイルよりも多くの問題が発生します...
EBCDIC
ヌルバイトに遭遇したときにエラーを出力したり、書き戻すときにヌルバイトを壊したりせずに動作すれば、さらに良くなります(一部のフィールドはバイナリエンコードされた 10 進数です)。
注意: これは、生のサイズが大きいファイル (ファイルには 1 行しか含まれません) に関するものではなく、ほとんどのエディターが非常に長い行を処理するように最適化されていないという事実に関するものです。
答え1
あなたが説明しているようなファイルは、実用上はバイナリ ファイルのように動作し、そのように扱う必要があると思います。
16 進エディタで攻撃することもできますが、EBCIDC の部分には役立ちません。
このファイルで多くの編集を行う必要があり、その固定長レコード形式に精通している場合は、このファイルの特定の形式で機能する何かを Perl または別の言語 (Perl をお勧めします。Perl は古く、UTF-8 などを EBCIDC に変換するモジュールがある可能性が高いためです) で作成する価値があるかもしれません。
答え2
私は実は試してみた1 行 150,000 文字のファイルに対して vim を実行したところ、非常にスムーズに動作しました。
だから、もしまだ試していないのであれば、ぜひ一度試してみる価値があると思いますyou heard vim doesn't like such kind of files
。
私がファイルを入手した方法は次のとおりです:
seq 150000 | while read num; do echo -n "b" ; done > megaline.txt
答え3
私は Dakatine と同じ方法を emacs インストールで試してみましたが、うまくいきました。ハングアップも何もありませんでした。プレーンテキストを編集している場合 (つまり、プログラミング言語のモードで必要な分析をまったく行っていない場合text-mode
)、emacs がロックアップするのは非常に困難です。Eclipse で見られる動作は、Eclipse がテキストをレンダリングするときに何らかの分析をしようとしていることを反映していると思われます。Gedit についても同様です。また、私はあなたの問題を で再現できません。less
私の場合は問題なく出力されます。
答え4
試してみる:JEdit - プログラマー向けエディタ
高度なバッファリング機能と高度に最適化された I/O を備えていますが、起動に時間がかかります (JVM のため)。Debian では少なくとも問題なく 1GiB を超えるファイルを表示および編集するために使用しています。ただし、Windows でも同様に動作するかどうかは保証できません... :)