web-dev-qa-db-ja.com

マルチギガバイトのテキストファイルを編集する方法Vimは動作しません=(

一度にメモリに小さな部分をロードするだけで、数ギガバイトのテキストファイルを編集できるエディターはありますか? Vimで処理できるとは思えません=(

105
Philip Brocoum

* nixを使用している場合(およびファイルの一部のみを変更する必要がある場合(まれに))、ファイルを分割し(splitコマンドを使用)、個別に編集する(awkを使用して、 sed、または同様のもの)を完了し、それらを連結します。

cat file2 file3 >> file1
68
Al pacino

Ctrl-Cはファイルのロードを停止します。ファイルが十分に小さい場合、すべてのコンテンツをロードし、ロード後の手順を強制終了したのは幸運だったかもしれません。このヒントを使用するときは、ファイル全体がロードされていることを確認してください。

Vimは大きなファイルをうまく処理できます。 3.4GBファイルを編集したり、行を削除したりしました。次の3つの点に注意してください。

  1. Ctrl-Cを押す:Vimは最初にファイル全体を読み取って、構文の強調表示やファイル内の行数などを実行しようとします。Ctrl-Cはこの列挙(および構文の強調表示)をキャンセルし、画面に表示するために必要です。
  2. 読み取り専用:ファイルが大きすぎてを作成できない場合、Vimは読み取り専用で起動する可能性があります。編集を実行するファイルのコピー。私はwしなければならなかった!ファイルを保存するには、それが最も時間がかかったときです。
  3. 行に移動します::115355と入力すると、115355行に直接移動します。これにより、これらの大きなファイルの場合ははるかに高速になります。 Vimは行のバッファーを読み込むたびに最初からスキャンを開始するようで、Ctrl-Fを押しながらファイルをスキャンすると、ファイルの終わり近くで本当に遅くなるようです。

注-Ctrl-Cを押したためにVimインスタンスが読み取り専用になっている場合、Vimがファイル全体をバッファーにロードしなかった可能性があります。その場合は、保存してくださいファイル全体ではなく、バッファ内の内容のみを保存しますGですばやくチェックして最後までスキップし、ファイル内のすべての行がそこにあることを確認します。

142
Aaron R.

詰まらせているのはプラグインかもしれません。 (構文の強調表示、折り畳みなど)

プラグインなしでvimを実行できます。

vim -u "NONE" hugefile.log

それはミニマリストですが、少なくともあなたが慣れているviの動きを与えるでしょう。

syntax off

別の明らかなものです。インストールを整理し、必要なものを入手します。あなたはそれが何ができるか、そしてあなたが他の手段でタスクを達成する必要があるかどうかを知るでしょう。

70
michael

Split + vimソリューションを使用して@Al pachioによって与えられた答えのわずかな改善により、ファイルチャンクをバッファとして効果的に使用して、globでファイルを読み込むことができます

$ split -l 5000 myBigFile
xaa
xab
xac
...

$ vim xa*
#edit the files

:nw  #skip forward and write
:n!  #skip forward and don't save 

:Nw  #skip back and write
:N!  #skip back and don't save
19
Amos Folarin

これを確認することをお勧めします VIMプラグイン これは、大きなファイルをロードするときの速度を考慮して、特定のvim機能を無効にします。

14
RedBlueThing

私はそれをしようとしましたが、そのほとんどはSQLダンプに小さな変更を加える必要があるときに1 GB前後のファイルでした。私はWindowsを使用していますが、これは大きな苦痛です。とても難しいです。

明らかな質問は「なぜ必要なのか」です。私はこれを複数回試さなければならない経験からあなたに伝えることができます、あなたはおそらく本当に別の方法を見つけたいと思います。

それでどうやってやるの?いくつかの方法があります。時々、vimまたはnanoを取得してファイルを開き、それらを使用できます。それは本当につらい痛みですが、うまくいきます。

それがうまくいかない場合(あなたの場合のように)、いくつかのオプションしかありません。必要な変更(たとえば、検索と置換)を行うための小さなプログラムを作成できます。あなたはそれを行うことができるかもしれないコマンドラインプログラムを使用することができます(たぶんそれはsed/awk/grep/etcで達成できるでしょうか?)

それらが機能しない場合は、ファイルを常にチャンクに分割し( split のようなものが明らかな選択ですが、必要な部分を取得するためにhead/tailを使用できます)、次にその部分を編集できます(s)それを必要とし、後で再結合します。

しかし、私を信じて、別の方法を見つけてみてください。

8
MBCook

16進エディタが巨大なファイルを処理することはかなり一般的だと思います。 Windowsでは、 HxD を使用します。これは、最大8 EB(80億ギガバイト)までのファイルを処理すると主張しています。

6
John Y

Win7 x64でvim 7.3.3を Charles CampbellのLargeFileプラグイン とともに使用して、マルチギガバイトのプレーンテキストファイルを処理しています。本当にうまくいきます。

あなたが正しく来ることを願っています。

4
AndrewJacksonZA

なんとか、GBが1つでも2つでも、vimを窒息させることができませんでした。 UltraEdit(Windows)とBBEdit(Mac)はさらに大きなファイルにも適していると聞きましたが、個人的な経験はありません。

2
Alex Martelli

以前は、このツールで3ギガファイルを開いていました http://csved.sjfrancke.nl/

2
Zaffiro

個人的には、 ltraEdit が好きです。ここに彼らの小さな 大きなファイルのスピル があります。

2
JP Alioto

私は、FAR Commanderの組み込みのエディター/ビューアーを使用して、非常に大きなログファイルを作成しました。

2
azheglov

TextPad を使用しましたが、大きなログファイルには上限がありません。

1
bstoney

私がそのようなことのために使用できた唯一のものは、私のお気に入りのMac hexエディター、0XEDです。しかし、それは私が数十メガバイトの大きさであると考えたファイルでした。どこまで行くのか分かりません。ただし、ファイルの一部のみを一度にメモリにロードすると確信しています。

1
AriX

過去に、ファイルが非常に大きくなったときに、分割/編集/結合のアプローチをうまく使用しました。これを機能させるには、編集するテキストが元のファイルのどこにあるかを知っておく必要があります。

0
Cheeso