Come modificare file di testo multi-gigabyte? Vim non funziona = (

Esistono editor in grado di modificare file di testo multi-gigabyte, magari caricando solo piccole porzioni nella memoria in una sola volta? Non sembra che Vim possa gestirlo = (

Se si utilizza * nix (e presupponendo di dover modificare solo parti di file (e raramente)), è ansible dividere i file (usando il comando split ), modificarli singolarmente (usando awk , sed o qualcosa di simile) e concatenare dopo che hai finito.

 cat file2 file3 >> file1 

Ctrl-C fermerà il caricamento del file. Se il file è abbastanza piccolo potresti essere stato fortunato ad aver caricato tutti i contenuti e hai appena terminato i passaggi di caricamento post. Verifica che l’intero file sia stato caricato quando usi questo suggerimento.

Vim può gestire abbastanza bene i file di grandi dimensioni. Ho appena modificato un file da 3,4 GB, eliminando le righe, ecc. Tre cose da tenere a mente:

  1. Premi Ctrl-C: Vim prova a leggere l’intero file inizialmente, per fare cose come l’evidenziazione della syntax e il numero di righe nel file, ecc. Ctrl-C cancellerà questa enumerazione (e l’evidenziazione della syntax), e caricherà solo ciò che è necessario per visualizzare sul tuo schermo.
  2. Readonly: Vim inizierà probabilmente in sola lettura quando il file è troppo grande per poterlo fare. copia del file per eseguire le modifiche. Dovevo w! per salvare il file, ed è quando ci è voluto più tempo.
  3. Vai alla riga: Digitando :115355 ti porterà direttamente alla riga 115355, che è molto più veloce nei file di grandi dimensioni. Vim sembra iniziare la scansione dall’inizio ogni volta che carica un buffer di linee e tenere premuto Ctrl-F per scorrere il file sembra rallentare molto verso la fine di esso.

Nota: se l’istanza di Vim è in sola lettura perché si preme Ctrl-C, è ansible che Vim non abbia caricato l’intero file nel buffer. Se ciò accade, salvandolo salverà solo ciò che è nel buffer, non l’intero file . Puoi rapidamente controllare con una G di saltare fino alla fine per assicurarti che tutte le linee del file siano lì.

Potrebbe trattarsi di plug-in che stanno causando il soffocamento. (evidenziazione della syntax, pieghe, ecc.)

puoi eseguire vim senza plugin.

 vim -u "NONE" hugefile.log 

È minimalista ma almeno ti darà i movimenti vi a cui sei abituato.

 syntax off 

è un altro ovvio. Elimina la tua installazione e procurati ciò di cui hai bisogno. Scoprirai di cosa è capace e se devi svolgere un compito con altri mezzi.

Un leggero miglioramento della risposta fornita da @Al pachio con la soluzione split + vim è ansible leggere i file con un glob, utilizzando efficacemente i blocchi di file come un buffer ad esempio

 $ 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 

Potresti voler controllare questo plugin VIM che disabilita certe funzionalità di vim nell’interesse della velocità durante il caricamento di file di grandi dimensioni.

Ho provato a farlo, soprattutto con file di circa 1 GB, quando ho dovuto apportare alcune piccole modifiche a un dump SQL. Sono su Windows, il che lo rende un grande problema. È seriamente difficile.

La domanda ovvia è “perché hai bisogno di?” Posso dirti dall’esperienza dover provare questo più di una volta, probabilmente vorresti davvero provare a trovare un altro modo.

Quindi come lo fai? Ci sono alcuni modi in cui l’ho fatto. A volte posso ottenere vim o nano per aprire il file e posso usarli. Questo è un dolore davvero difficile, ma funziona.

Quando ciò non funziona (come nel tuo caso) hai solo poche opzioni. È ansible scrivere un piccolo programma per apportare le modifiche necessarie (ad esempio, ricerca e sostituzioni). Potresti usare un programma a riga di comando che potrebbe essere in grado di farlo (forse potrebbe essere realizzato con sed / awk / grep / etc?)

Se quelli non funzionano, puoi sempre dividere il file in blocchi (qualcosa come split è la scelta più ovvia, ma potresti usare head / tail per ottenere la parte che desideri) e quindi modificare le parti che ne hanno bisogno, e ricombinare dopo.

Fidati di me, prova a trovare un altro modo.

Penso che sia ragionevolmente comune per gli editor esadecimali gestire file enormi. Su Windows, utilizzo HxD , che afferma di gestire file fino a 8 EB (8 miliardi di gigabyte).

Sto usando vim 7.3.3 su Win7 x64 con il plugin LargeFile di Charles Campbell per gestire file di testo in formato multi-gigabyte. Funziona davvero bene.

Spero tu vieni giusto.

Wow, non è mai riuscito a ottenere un soffocamento, anche con un GB o due. Ho sentito che UltraEdit (su Windows) e BBEdit (su Mac) sono ancora più adatti per file anche più grandi, ma non ho esperienza personale.

In passato ho aperto a un file di 3 gig con questo strumento http://csved.sjfrancke.nl/

Ho usato TextPad per i file di registro di grandi dimensioni che non ha un limite superiore.

Personalmente, mi piace UltraEdit . Ecco il loro piccolo spiel su file di grandi dimensioni .

Ho usato l’editor / visualizzatore integrato di FAR Commander per i file di registro di dimensioni molto grandi.

L’unica cosa che sono stato in grado di usare per qualcosa di simile è il mio editor esadecimale Mac preferito, 0XED. Tuttavia, era con i file che considero grandi a decine di megabyte. Non sono sicuro di quanto lontano andrà. Sono abbastanza sicuro che carica solo parti del file in memoria in una sola volta, però.

In passato ho usato con successo un approccio split / edit / join quando i file diventano molto grandi. Affinché ciò funzioni, devi sapere dove si trova il testo da modificare, nel file originale.