pesquisa de texto inexata


10

Existe algum utilitário como grepou mesmo uniqpara pesquisa inexata, ou eu mesmo deveria escrever?

Quero dizer, ele parecerá 90% (o número pode variar) correspondente, ou algo assim. Por exemplo, eu tenho um arquivo com várias strings:

abc123
abd123
abc223
qwe938

Nesse caso, esse utilitário deve retornar as três primeiras cadeias ou dizer que são semelhantes. Claro que não conheço nenhum padrão de conteúdo de arquivo, como no caso de grepou uniq.


Isso é muito específico do conjunto de dados. Por exemplo, Mary é como Marie ou ABC é como BCD? Você pode dar um exemplo real dos seus dados?
EightBitTony

Respostas:


19

concorda ou tre-grep fará o que você está pedindo; eles são correspondências "aproximadas" de regex / grep. Para mais informações, consulte também o artigo da Wikipedia .

% tre-agrep --help | head             (05-23 16:53)
Usage: tre-agrep [OPTION]... PATTERN [FILE]...
Searches for approximate matches of PATTERN in each FILE or standard input.
Example: `tre-agrep -2 optimize foo.txt' outputs all lines in file `foo.txt'     that
match "optimize" within two errors.  E.g. lines which contain "optimise",
"optmise", and "opitmize" all match.

Regexp selection and interpretation:
  -e, --regexp=PATTERN      use PATTERN as a regular expression
  -i, --ignore-case         ignore case distinctions
  -k, --literal             PATTERN is a literal string


% agrep  | head                       (05-23 16:53)
usage: agrep [-@#abcdehiklnoprstvwxyBDGIMSV] [-f patternfile] [-H dir] pattern [files]

summary of frequently used options:
(For a more detailed listing see 'man agrep'.)
-#: find matches with at most # errors
-c: output the number of matched records
-d: define record delimiter
-h: do not output file names
-i: case-insensitive search, e.g., 'a' = 'A'
-l: output the names of files that contain a match
-n: output record prefixed by record number
-v: output those records that have no matches
-w: pattern has to match as a word, e.g., 'win' will not match 'wind'
-B: best match mode. find the closest matches to the pattern
-G: output the files that contain a match
-H 'dir': the cast-dictionary is located in directory 'dir'

É exatamente isso que estou procurando. Obrigado.
apressar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.