Editor di testo per aprire grandi (giganti, enormi, grandi) file di testo

Intendo più di 100 MB di grandezza; tali file di testo possono spingere il limite degli editor.

Ho bisogno di guardare attraverso un grande file XML, ma non posso se l'editor è buggato.

Qualche suggerimento?

Soluzione

VS Code (Windows, macOS, Linux) - Libero e Open Source con una bella GUI. Modifica un file JSON di 3,6 GB, caricato in un minuto. Devi avere abbastanza RAM per caricare i file.

Visualizzatori di sola lettura gratuiti:

  • glogg (Windows, macOS, Linux) - Confermato per gestire file multi-GB. La sua caratteristica principale è la ricerca per espressioni regolari. Ha schede, legge i file direttamente dal disco, può guardare/seguire i file e permette all'utente di marcare le linee.
  • LogExpert (Windows) - "Un sostituto GUI per tail." Supporta il file following, la ricerca, il filtraggio, l'evidenziazione configurabile, i plugin e gli strumenti esterni.
  • Visualizzatore di file di testo (Windows) - Minimalista e con dimensioni eseguibili molto piccole. Supporta la visualizzazione divisa, la personalizzazione del tema del testo, la ricerca regex e il file following.
  • Lister (Windows) - Ancora più piccolo e minimalista. È un solo eseguibile, appena 500 KB, ma supporta comunque la ricerca (con regex), la stampa, una modalità di editor esadecimale e le impostazioni.

Editor gratuiti:

  • Vim e Emacs (Windows, macOS, Linux) - Classici editor Unix. Curva di apprendimento ripida, ma brutalmente efficiente. Hanno impostazioni che possono essere regolate per renderli ancora più veloci.
  • Large File Editor (Windows) - Apre e modifica file TB+, supporta Unicode, usa poca memoria, ha caratteristiche specifiche per XML, e include una modalità binaria.
  • HxD (Windows) - Un editor esadecimale, non un editor di testo; ma è incredibilmente veloce e utile.
  • GigaEdit (Windows) - Supporta la ricerca, le statistiche dei caratteri e la personalizzazione dei font. Ma è buggato - con file grandi, permette solo di sovrascrivere caratteri, non di inserirli; non rispetta LF come terminatore di riga, solo CRLF; ed è lento.

Programmi integrati (nessuna installazione richiesta):

  • meno (macOS, Linux) - Il tradizionale strumento di paginazione a riga di comando di Unix. Permette di visualizzare file di testo praticamente di qualsiasi dimensione. Può essere installato anche su Windows.
  • Notepad (Windows) - Decente con file di grandi dimensioni, specialmente con word wrap disattivato.
  • MORE (Windows) - Questo si riferisce al MORE di Windows, non al more di Unix. Un programma da console che ti permette di visualizzare un file, una schermata alla volta.

Visualizzatori web:

  • htmlpen.com - Può aprire ed evidenziare la sintassi dei file TB+. Permette l'editing, tranne che per i file molto grandi. Supporta la ricerca, le regex e l'esportazione.
  • readfileonline.com - Un altro visualizzatore di file grandi in HTML5. Supporta la ricerca.

Editor a pagamento:

  • 010 Editor (Windows, macOS, Linux) - Apre file giganti (fino a 50 GB).
  • SlickEdit (Windows, macOS, Linux) - Apre file di grandi dimensioni.
  • UltraEdit (Windows, macOS, Linux) - Apre file di più di 6 GB, ma la configurazione deve essere cambiata perché questo sia pratico: Menu » Advanced » Configuration » File Handling » Temporary Files » Open file without temp file...
  • EmEditor (Windows) - Gestisce bene file di testo molto grandi (ufficialmente fino a 248 GB, ma fino a 900 GB secondo un rapporto).

E infine, hai provato ad aprire il file di grandi dimensioni con il tuo normale editor? Alcuni editor possono effettivamente gestire file ragionevolmente grandi. In particolare, Notepad++ (Windows) e Sublime Text (Windows, macOS, Linux) supportano file dell'ordine dei 2 GB.

Commentari (61)

Trucchi e consigli

meno

Perché stai usando editor per guardare solo un file (grande)?

Sotto *nix o Cygwin, basta usare less. (C'è un famoso detto - "less is more, more or less" - perché "less" ha sostituito il precedente comando Unix "more", con l'aggiunta che si poteva scorrere all'indietro). Cercare e navigare sotto less è molto simile a Vim, ma non c'è un file di swap e si usa poca RAM.

Esiste un port Win32 di GNU less. Vedi la sezione "less" della risposta sopra.

Perl

Il Perl è buono per script veloci, e il suo operatore .. (range flip-flop) è un buon meccanismo di selezione per limitare la spazzatura che si deve attraversare.

Per esempio:

$ perl -n -e 'print if ( 1000000 .. 2000000)' humongo.txt | less

Questo estrarrà tutto dalla linea 1 milione alla linea 2 milioni, e vi permetterà di setacciare l'output manualmente in meno.

Un altro esempio:

$ perl -n -e 'print if ( /regex one/ .. /regex two/)' humongo.txt | less

Questo inizia a stampare quando la "espressione regolare uno" trova qualcosa, e si ferma quando la "espressione regolare due" trova la fine di un blocco interessante. Può trovare più blocchi. Setaccia l'output...

logparser

Questo è un altro strumento utile che puoi usare. Per citare l'articolo di Wikipedia:

logparser è una flessibile utilità a riga di comando che fu inizialmente scritta da Gabriele Giuseppini, un dipendente Microsoft, per automatizzare i test per il logging di IIS. Era destinato all'uso con il sistema operativo Windows, ed era incluso nel Resource Kit Tools di IIS 6.0. Il comportamento predefinito di logparser funziona come una "pipeline di elaborazione dati", prendendo un'espressione SQL sulla linea di comando, e producendo le linee contenenti le corrispondenze per l'espressione SQL.

Microsoft descrive Logparser come uno strumento potente e versatile che fornisce un accesso universale di query a dati basati su testo come file di log, file XML e file CSV, così come fonti di dati chiave sul sistema operativo Windows come il registro degli eventi, il registro, il file system e Active Directory. I risultati della query di input possono essere formattati su misura in un output basato sul testo, o possono essere persistiti in obiettivi più speciali come SQL, SYSLOG, o un grafico.

Esempio di utilizzo:

C:\>logparser.exe -i:textline -o:tsv "select Index, Text from 'c:\path\to\file.log' where line > 1000 and line < 2000"
C:\>logparser.exe -i:textline -o:tsv "select Index, Text from 'c:\path\to\file.log' where line like '%pattern%'"

La relatività delle dimensioni

100 MB non sono troppo grandi. 3 GB sta diventando un po' grande. Lavoravo in una struttura di stampa e posta che creava circa il 2% della posta di prima classe degli Stati Uniti. Uno dei sistemi per cui ero il capo tecnico rappresentava circa il 15+% dei pezzi di posta. Avevamo alcuni grossi file da debuggare qua e là.

E ancora...

Sentiti libero di aggiungere altri strumenti e informazioni qui. Questa risposta è il wiki della comunità per una ragione! Abbiamo tutti bisogno di più consigli su come gestire grandi quantità di dati...

Commentari (12)