Um método para encontrar duas cadeias de caracteres dentro da distância

1

Eu tenho uma grande coleção de arquivos de texto.

Eu estou procurando uma maneira de encontrar duas strings que estão na mesma linha (no mesmo arquivo) na coleção, onde a distância em caracteres entre essas duas strings não é maior do que a distância que eu especificar.

Por exemplo, se um arquivo de texto contiver:

The quick brown fox jumps over the lazy dog

e eu passo as strings fox e over com uma distância de 7 (ou mais) ele retornará essa linha porque 7 é a distância entre essas palavras.

Estou executando uma máquina com Windows 8.

    
por the-lights 19.11.2013 / 17:43

2 respostas

2

Use egrep. Ou opção grep -e.

egrep -o "fox.{1,7}over" filename.txt

Em geral, é:

egrep -o "string1.{1,7}string2" filename.txt

Todas as opções acima retornarão apenas a parte correspondente. Para que a linha completa seja retornada, não use a opção -o. Então seria:

egrep "string1.{1,7}string2" filename.txt

Para aplicá-lo a todos os arquivos em uma pasta que você usaria:

egrep "string1.{1,7}string2" *

Tudo isso pressupõe que haja pelo menos uma separação de caracteres.

    
por 19.11.2013 / 21:34
4

Como você está no Windows, use o Notepad ++ junto com seu plugin RegEx Helper

A Notepad++ plugin that allows users to develop regular expressions and test them against their open documents.

Se você quiser a linha inteira, use ^.*fox.{0,7}over.*$ em vez de fox.{0,7}over

    
por 19.11.2013 / 22:05