Emacs:大きなファイルで、X行とY行の間のすべての行を含むバッファを開きます。

Emacs:大きなファイルで、X行とY行の間のすべての行を含むバッファを開きます。

他の質問と同じ精神で:大きなファイルのX行をY行に分類:

開く方法はありますか?Emacs内で(そしてバッファに表示されます)巨大なテキストファイルに与えられた行のセット(例えば、X行との間のすべての行)を表示しますか?Y

たとえば、ファイルを開き、バッファの57890000行と57890010行の間のすべての行を表示します。huge.txt

修正する: 少なくとも行を読み取り専用(表示目的でのみ)として開くソリューションに興味があります。行を編集して元のファイルに保存することもできれば良いでしょう。

ベストアンサー1

ファイル全体を開くが(必須)エディタウィンドウには一部のみを表示するには、以下を使用します。縮小。処理するバッファ部分を選び、C-x n nnarrow-to-region)を押す。コマンドを無効にするように求められたら、「はい」と言います。バッファ全体を見直すには、C-x n w()を押します。widenバッファを保存すると、ファイル全体が選択されます。すべてのデータはそのまま残るので、範囲を狭くすると表示される内容が制限されます。

ファイルの一部を表示するには、現在のバッファに挿入するだけです。shell-command接頭辞付きのパラメータ(M-1 M-!必要な行を抽出するのに適したコマンド、例えば<huge.txt tail -n +57890001 | head -n 11

Lisp機能もありますinsert-file-contentsバイト範囲を使用できます。使用できますM-:eval-expression):

(insert-file-contents "huge.txt" nil 456789000 456791000)

整数のサイズ制限が発生する可能性があります(バージョンとプラットフォームによっては確認してください)。most-positive-fixnum)。

理論的には、必要に応じてファイルの一部を透過的にロードして保存するEmacsモードを作成することができます(整数サイズの制限により、32ビットシステムで実際のファイルオフセットを使用することはできませんが)。私が知る限り、この方向への唯一の努力は次のとおりです。非常に低い周波数(GitHubリンクここ)。

おすすめ記事