Editor de texto para abrir grandes (gigantescos, enormes, grandes) arquivos de texto

Quero dizer 100+ MB grandes; tais arquivos de texto podem empurrar o envelope dos editores.

Eu preciso olhar através de um grande arquivo XML, mas não posso se o editor estiver com buggy.

Alguma sugestão?

Solução

VS Code (Windows, macOS, Linux) - Livre e de código aberto com uma boa GUI. Editado um arquivo JSON de 3.6 GB, carregado em um minuto. Você deve ter RAM suficiente para carregar os arquivos.

Telespectadores gratuitos só de leitura:

  • **glogg*** (Windows, macOS, Linux) - Confirmado para lidar com arquivos multi-GB. Sua principal característica é a busca por expressões regulares. Possui abas, lê arquivos diretamente do disco, pode assistir/acompanhar arquivos e permite ao usuário marcar linhas.
  • LogExpert (Windows) - "Um substituto GUI para tail." Suporta acompanhamento de arquivos, busca, filtragem, destaque configurável, plugins, e ferramentas externas.
  • Large Text File Viewer (Windows) - Minimalista e tem tamanho executável muito pequeno. Suporta visualização dividida, personalização de temas de texto, busca regex e acompanhamento de arquivos.
  • **Lister*** (Windows) - Ainda mais pequeno e minimalista. It's é um executável, com apenas 500 KB, mas ainda suporta pesquisa (com regexes), impressão, um modo editor hexadecimal, e configurações.

Editores gratuitos:

  • Vim e Emacs (Windows, macOS, Linux) - Editores clássicos Unix. Curva de aprendizagem íngreme, mas brutalmente eficiente. Eles têm configurações que podem ser ajustadas para torná-los ainda mais rápidos.
  • **Large File Editor*** (Windows) - Abre e edita arquivos TB+, suporta Unicode, usa pouca memória, tem recursos específicos de XML e inclui um modo binário.
  • **HxD*** (Windows) - Um editor hexadecimal, não um editor de texto; mas é incrivelmente rápido e útil.
  • **GigaEdit*** (Windows) - Suporta pesquisa, estatísticas de caracteres e personalização de fontes. Mas it's buggy - com arquivos grandes, ele só permite sobrescrever caracteres, não inseri-los; ele não't respeita LF como terminador de linha, apenas CRLF; e it's slow.

Construir programas (não requer instalação):

  • less (macOS, Linux) - A tradicional ferramenta de pager de linha de comando Unix. Permite que você veja arquivos de texto de praticamente qualquer tamanho. Pode ser instalado no Windows, também.
  • **Notepad*** (Windows) - Decente com arquivos grandes, especialmente com a palavra wrap desligada.
  • **MORE*** (Windows) - Isto se refere ao Windows MORE, não ao Unix mais. Um programa de console que lhe permite visualizar um arquivo, uma tela de cada vez.

Visualizadores da Web:

  • **htmlpen.com*** - Consegue abrir e sintaxar arquivos TB+ de alta luminosidade. Permite a edição, excepto para ficheiros muito grandes. Suporta pesquisa, regexes e exportação.
  • **readfileonline.com*** - Outro visualizador de arquivos HTML5 grandes. Suporta pesquisa.

Editores pagos:

  • 010 Editor (Windows, macOS, Linux) - Abre arquivos gigantes (até 50 GB).
  • **SlickEdit*** (Windows, macOS, Linux) - Abre arquivos grandes.
  • **UltraEdit*** (Windows, macOS, Linux) - Abre arquivos com mais de 6 GB, mas a configuração deve ser alterada para que isso seja prático: Menu » Avançado » Configuração » Manuseio de arquivos » Arquivos temporários » Abrir arquivo sem arquivo temporário...
  • EmEditor (Windows) - Lida bem com arquivos de texto muito grandes (oficialmente até 248 GB, mas até 900 GB de acordo com um relatório).

E finalmente, você já tentou abrir o arquivo grande com o seu editor habitual? Alguns editores podem realmente lidar com arquivos razoavelmente grandes. Em particular, **Notepad++*** (Windows) e Sublime Text (Windows, macOS, Linux) suportam arquivos na faixa de 2 GB.

Comentários (61)

Dicas e truques

menos

Por que você está usando editores para simplesmente visualizar em um arquivo (grande)?

Sob *nix ou Cygwin, basta usar menos. (Há um famoso ditado - "menos é mais, mais ou menos" - porque "menos" substituiu o anterior comando Unix "mais", com a adição de que você poderia rolar de volta para cima). Pesquisar e navegar sob menos é muito similar ao Vim, mas não há nenhum arquivo swap e pouca memória RAM usada.

Há um porte Win32 do GNU menos. Veja o "less" seção da resposta acima.

Perl

Perl é bom para scripts rápidos, e seu operador .. (range flip-flop) faz um bom mecanismo de seleção para limitar o crud que você tem que passar.

Por exemplo:

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

Isto irá extrair tudo da linha 1 milhão para a linha 2 milhões, e permitir que você peneirar a saída manualmente em menos.

Outro exemplo:

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

Isto começa a imprimir quando o "expressão regular um" encontra algo, e pára quando o "expressão regular dois" encontra o fim de um bloco interessante. Pode encontrar vários blocos. Desvia a saída...

logparser

Esta é outra ferramenta útil que você pode usar. Para citar o artigo da Wikipedia:

**logparser*** é um utilitário de linha de comando flexível que foi inicialmente escrito por Gabriele Giuseppini, um funcionário da Microsoft, para automatizar os testes de registro IIS. Ele foi projetado para ser usado com o sistema operacional Windows, e foi incluído com as Ferramentas do Kit de Recursos do IIS 6.0. O comportamento padrão do logparser funciona como um "data processing pipeline" pegando uma expressão SQL na linha de comando, e emitindo as linhas contendo correspondências para a expressão SQL.

a Microsoft descreve o Logparser como uma ferramenta poderosa e versátil que fornece acesso universal a dados baseados em texto, como arquivos de log, arquivos XML e arquivos CSV, bem como fontes de dados importantes no sistema operacional Windows, como o Log de Eventos, o Registro, o sistema de arquivos e o Active Directory. Os resultados da consulta de entrada podem ser formatados de forma personalizada na saída baseada em texto, ou podem ser persistidos para alvos mais especializados como SQL, SYSLOG, ou um gráfico.

Exemplo de uso:

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%'"

A relatividade dos tamanhos

100 MB é' não é muito grande. 3 GB está ficando meio grande. Eu costumava trabalhar em uma gráfica & facilidade de correio que criou cerca de 2% do correio de primeira classe dos EUA. Um dos sistemas para o qual eu era o líder técnico era responsável por cerca de 15+% das peças de correio. Nós tínhamos alguns arquivos grandes para depurar aqui e ali.

E mais...

Sinta-se à vontade para adicionar mais ferramentas e informações aqui. Esta resposta é wiki da comunidade por uma razão! Todos nós precisamos de mais conselhos para lidar com grandes quantidades de dados...

Comentários (12)