Como aplicar o regex ao arquivo de texto grande?

2

Eu tenho arquivos de texto grandes (alguns mega) exemplo e gostaria de saber como se há um recurso mais eficiente maneira de aplicar regex do que a PyCharm ou SublimText 2 no Mac OSX.

Obrigado.

Comentário: quero substituir o material e não apenas a pesquisa. Um exemplo seria bem-vindo.

    
por Alexis Benoist 25.11.2014 / 16:17

2 respostas

3

A maneira mais eficiente de pesquisar é grep ou talvez ag , assim:

grep -E "pattern" files

A maneira mais eficiente de substituir é sed , assim:

sed -e "s/pattern/replacement/g" <input.txt >output.txt

No entanto, esses métodos exigem que você use a linha de comando, e não a GUI sofisticada.

UPDATE

Depois de examinar o arquivo que você vinculou, percebo que usar o grep ou qualquer outro utilitário baseado em texto é uma abordagem errada - esse arquivo é de 150 MB não compactado e, na verdade, é um arquivo CSV. Em vez disso, recomendo importar esses dados CSV para algum tipo de banco de dados. Para seus propósitos, acho que o SQLite funcionaria melhor, mas você também pode usar bancos de dados maiores como o PostgreSQL ou o MySQL. A chave para obter pesquisas muito rápidas é criar índices em campo (s) sendo pesquisados.

    
por 25.11.2014 / 20:41
0

a more efficient way to apply regex to large text files?

A maneira mais eficiente que conheço é grep search_expression hugefile

than PyCharm or SublimText 2 on Mac OSX

Esses são editores de texto, nem todos os editores de texto são otimizados para pesquisar arquivos de texto grandes. Não é o trabalho principal deles. Eles podem realizar muita análise (por exemplo, para detecção e destaque de sintaxe) e outros trabalhos que não são relevantes para sua tarefa.

É comum o fato de que pequenas ferramentas especializadas podem superar ferramentas de propósito geral.

    
por 25.11.2014 / 16:26