Editor de texto para abrir arquivos de texto grandes (gigantes, enormes, grandes) [fechados]

1023

Quero dizer mais de 100 MB de tamanho; esses arquivos de texto podem empurrar o envelope dos editores.

Preciso examinar um arquivo XML grande, mas não posso se o editor estiver com erros.

Alguma sugestão?

Dave Jarvis
fonte
166
Na verdade, arquivos de texto com mais de 100 MB ou mais de 1 GB não são tão incomuns quanto você imagina (por exemplo, arquivos de log de servidores ocupados).
Anders Sandvig
15
Sneakyness: E não exatamente o texto. Eu acho que os requisitos de leitura de arquivos de texto e leitura de arquivos binários diferem um pouco. Você pode passá-lo através da base64 ou do uuencode.
9609 Joey
2
Esta deve ser pelo menos uma pergunta semelhante ou mesmo vinculada, como foi feito 18 meses antes ... stackoverflow.com/questions/102829/…
ONDEV
1
Eu também estava procurando a resposta para esta pergunta exata, a fim de ler alguns arquivos de log enormes que eu gerei!
HorseloverFat
1
@BlairHippo Sinto-me da mesma maneira, estou quase nervoso ao fazer uma pergunta, porque são grandes as chances de alguém dizer "Feche isso, deve entrar no WhateverExchange"
Rodolfo

Respostas:

1387

Espectadores somente leitura gratuitos:

  • Visualizador de arquivos de texto grande (Windows) - Tema totalmente personalizável (cores, fontes, quebra de linha, tamanho da guia). Suporta visualização dividida horizontal e vertical. Também oferece suporte a pesquisa de arquivos e regex. Muito rápido, simples e com pequeno tamanho de executável.
  • klogg (Windows, macOS, Linux) - um fork do glogg mantido, seu principal recurso é a pesquisa de expressões regulares. Ele também pode assistir a arquivos, permite que o usuário marque linhas e possui sérias otimizações integradas. Mas do ponto de vista da interface do usuário, é feio e desajeitado.
  • LogExpert (Windows) - "Um substituto da GUI paratail." É realmente um analisador de arquivos de log, não um visualizador de arquivos grandes, e em um teste foram necessários 10 segundos e 700 MB de RAM para carregar um arquivo de 250 MB. Mas seus principais recursos são o colunizador (logs de análise que estão em CSV, JSONL etc. e exibidos em formato de planilha) e o marca-texto (mostra linhas com determinadas palavras em determinadas cores). Também oferece suporte a arquivos a seguir, guias, arquivos múltiplos, favoritos, pesquisa, plug-ins e ferramentas externas.
  • Lister (Windows) - Muito pequeno e minimalista. É um executável, com apenas 500 KB, mas ainda suporta pesquisa (com expressões regulares), impressão, modo de editor hexadecimal e configurações.
  • loxx (Windows) - Suporta arquivos, realces, números de linhas, arquivos enormes, regex, vários arquivos e visualizações e muito mais. A versão gratuita não pode: processar regex, filtrar arquivos, sincronizar carimbos de data e hora e salvar arquivos alterados.

Editores gratuitos:

  • Seu editor regular ou IDE. Editores modernos podem lidar com arquivos surpreendentemente grandes. Em particular, o Vim (Windows, macOS, Linux), Emacs (Windows, macOS, Linux), Notepad ++ (Windows), Sublime Text (Windows, macOS, Linux) e VS Code (Windows, macOS, Linux) oferecem suporte a grandes (~ 4 GB), assumindo que você possui a RAM.
  • Editor de arquivos grandes (Windows) - abre e edita arquivos TB +, suporta Unicode, usa pouca memória, possui recursos específicos para XML e inclui um modo binário.
  • GigaEdit (Windows) - Suporta pesquisa, estatísticas de caracteres e personalização de fontes. Mas é buggy - com arquivos grandes, permite apenas sobrescrever caracteres, não inseri-los; não respeita o LF como um terminador de linha, apenas o CRLF; e é lento.

Programas incorporados (não requer instalação):

  • less (macOS, Linux) - A ferramenta tradicional de pager da linha de comando do Unix. Permite visualizar arquivos de texto de praticamente qualquer tamanho. Também pode ser instalado no Windows.
  • Bloco de notas (Windows) - decente com arquivos grandes, especialmente com a quebra de linha desativada.
  • MAIS (Windows) - Refere-se ao WindowsMORE, não ao Unixmore. Um programa de console que permite visualizar um arquivo, uma tela de cada vez.

Visualizadores da Web:

Editores pagos:

  • Editor 010 (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 com arquivos de texto muito grandes (oficialmente até 248 GB, mas até 900 GB de acordo com um relatório).
MultiplyByZer0
fonte
60
VIM, ou Emacs ... escolha seu veneno, ambos irão lidar com qualquer arquivo que você jogue neles. Eu, pessoalmente, prefiro o Emacs, mas ambos vencerão o bloco de notas sem nem um soluço.
Mike Stone
25
O Emacs tem um tamanho máximo de buffer, dependendo da arquitetura subjacente (32 ou 64 bits). Eu acho que em sistemas de 32 bits você recebe o erro "tamanho máximo do buffer excedido" em arquivos maiores que 128 MB.
Rafał Dowgird
82
Eu apenas tentei Notepad ++ com um arquivo de log de 561MB e disse que era muito grande
barfoon
9
@Rafal Interesting! Parece que em 64 bits é ~ 1024 petabytes. A razão tem a ver com o facto de emacs tem para acompanhar posições tampão (tais como o ponto)
baudtack
79
Mas tenha cuidado, o vim funcionará apenas enquanto os arquivos em questão tiverem quebras de linha suficientes. Uma vez tive que editar um ca. Arquivo de 150 MB sem nenhuma quebra de linha e teve que recorrer ao gedit porque o vim não conseguiu lidar com isso.
Benno
192

Dicas e truques

Menos

Por que você está usando editores para apenas olhar para um arquivo (grande)?

Sob * nix ou Cygwin , use apenas menos . (Existe um ditado famoso - "menos é mais, mais ou menos" - porque "menos" substituiu o comando anterior do Unix "mais", com a adição de que você poderia rolar para trás.) Pesquisando e navegando sob menos é muito semelhante a Vim, mas não há arquivo de troca e pouca RAM usada.

Há uma porta Win32 do GNU menos. Veja a seção "menos" da resposta acima.

Perl

O Perl é bom para scripts rápidos, e seu ..operador (range flip-flop) cria um bom mecanismo de seleção para limitar o problema que você precisa percorrer.

Por exemplo:

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

Isso extrairá tudo da linha 1 milhão à linha 2 milhões e permitirá que você peneire a saída manualmente em menos.

Outro exemplo:

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

Isso começa a ser impresso quando a "expressão regular um" encontra alguma coisa e para quando a "expressão regular dois" encontra o fim de um bloco interessante. Pode encontrar vários blocos. Peneire a saída ...

logparser

Essa é 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, funcionário da Microsoft, para automatizar testes para o log do IIS. Ele foi projetado para uso com o sistema operacional Windows e foi incluído nas Ferramentas do IIS 6.0 Resource Kit. O comportamento padrão do logparser funciona como um "pipeline de processamento de dados", pegando uma expressão SQL na linha de comando e produzindo as linhas que contêm correspondências para a expressão SQL.

A Microsoft descreve o Logparser como uma ferramenta versátil e poderosa que fornece acesso universal à consulta de dados baseados em texto, como arquivos de log, arquivos XML e arquivos CSV, além de 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 em mais destinos especiais, 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 trabalhava em uma instalação de impressão e correio que criava cerca de 2% do correio de primeira classe nos EUA. Um dos sistemas pelos quais eu era o líder técnico representava cerca de 15% + dos itens de correspondência. Tínhamos alguns arquivos grandes para depurar aqui e ali.

E mais...

Sinta-se livre para adicionar mais ferramentas e informações aqui. Esta resposta é um wiki da comunidade por um motivo! Todos nós precisamos de mais conselhos sobre como lidar com grandes quantidades de dados ...

MultiplyByZer0
fonte
8
+1, recentemente tive alguns arquivos xml enormes (+1 gigabyte) que eu precisava examinar. Estou no windows e vim, emacs, notepad ++ e vários outros editores se engasgaram com o arquivo até o ponto em que meu sistema quase se tornou inutilizável ao tentar abrir o arquivo. Depois de um tempo, percebi o quão desnecessário era realmente tentar abrir o arquivo em um editor, quando eu apenas precisava visualizá-lo. Usando o cygwin (e alguns inteligentes grep / less / sed-magic), encontrei facilmente a parte em que me interessava e pude lê-la sem problemas.
wasatz
8
você não precisa do cygwin por menos, também pode usá-lo no windows: gnuwin32.sourceforge.net/packages/less.htm
ChristophK
2
Este editor XML aqui também possui um componente visualizador de arquivos grandes e fornece cores de sintaxe também para arquivos enormes. Os arquivos não são carregados completamente na memória; portanto, um documento com vários GB não deve ser um problema. Além disso, essa ferramenta também pode validar esses grandes documentos XML ... Na minha opinião, uma das melhores abordagens para trabalhar com grandes dados XML.
Lichtfusion
9
OK, então eu apenas corrigi meu próprio problema. lesscom quebra de linha é lento. less -Ssem quebra de linha é extremamente rápido, mesmo em linhas grandes. Estou feliz de novo!
Andy Brown
6
Ótima resposta. Quero observar que, se você possui o Git for Windows instalado, provavelmente também possui o Git bash, o que inclui less.
transistor1