Ferramenta para pesquisar texto em arquivos grandes [closed]

1

Estou procurando uma ferramenta para encontrar uma linha que contenha um texto de pesquisa em um arquivo com tamanho de 4 GB

    
por Paul 08.01.2010 / 18:25

8 respostas

3

Quando você usa * nix, você também pode usar split para obter arquivos menores e, em seguida, analisá-lo com o que quiser, seja grep, awk, ...

    
por 08.01.2010 / 19:01
6

Se você tiver o powershell instalado, poderá usar

select-string -pattern <your_string> -path <path_to_file>

Provavelmente não será rápido, mas não vai sufocar como o find ou o findstr provavelmente o farão.

    
por 08.01.2010 / 19:51
2

Use grep. Nada será rápido.

    
por 08.01.2010 / 18:27
1

Não é gratuito, mas se este for um arquivo de texto, o BareTailPro poderá fazer o trabalho. Eu usei-o para procurar texto em arquivos de log que eram muito grandes para caber na memória. Uma vantagem é que ele não mostra apenas o texto, mas permite que você salte no arquivo de texto, para que você possa ver as linhas antes e depois das ocorrências.

    
por 08.01.2010 / 18:38
1

Se você fizer isso com bastante frequência, e o arquivo for dividido em linhas lógicas, você poderá carregá-lo no Splunk e pesquisar a partir daí. Ele fará indexação para você ser rápido (er).

    
por 08.01.2010 / 18:45
1

Eu usaria o grep on * nix e usaria um editor de texto de extremidade superior (por exemplo, Notepad ++) no Windows.

    
por 08.01.2010 / 18:46
1

Depende da aplicação, do tempo de resposta necessário e do que você está disposto a fazer para atingir essas metas.

Recentemente, eu estava trabalhando com um arquivo de texto de mais de 10 GB, mais de 50 milhões de linhas e tive a necessidade de pesquisar por strings específicas em cada linha. A ferramenta padrão do Unix "grep" funcionou, mas demorou um tempo inaceitavelmente longo (vários minutos). Eu importei o texto para um banco de dados postgreslq (era um arquivo CSV, facilmente importado) e, uma vez indexado na chave que eu precisava pesquisar, levei menos de um segundo para encontrar meu registro.

Concedido, minha estação de trabalho é de núcleo único, com apenas 4 GB de RAM, uma CPU de 4 GHz de 4 anos e um sistema de arquivos de alta capacidade (ZFS) usando unidades PATA de 5 ou mais anos. Sua milhagem certamente irá variar. Ainda assim, a diferença de tempo entre os dois métodos é impressionante.

Se os seus dados forem de texto livre, você ainda poderá considerar a importação em um banco de dados que ofereça suporte à pesquisa de texto completo e aos índices de forma adequada para dar suporte a essas pesquisas.

Mesmo se você tiver a RAM para armazenar todo o arquivo em cache e uma máquina rápida, fazer uma pesquisa linear de arquivos desse tamanho será ineficiente em termos de tempo, dependendo (mais uma vez) do aplicativo.

    
por 08.01.2010 / 19:28
0

No prompt do Windows CMD, há dois comandos FIND e FINDSTR . Eles provavelmente vão se engasgar em um arquivo desse tamanho ou ficarem muito lentos, mas você já os tem.

Digite help findstr e help find para documentação.

    
por 08.01.2010 / 19:44