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, ...
Estou procurando uma ferramenta para encontrar uma linha que contenha um texto de pesquisa em um arquivo com tamanho de 4 GB
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.
Use grep. Nada será rápido.
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.
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).
Eu usaria o grep on * nix e usaria um editor de texto de extremidade superior (por exemplo, Notepad ++) no Windows.
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.
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.
Tags windows search filesystems