ungenaue Textsuche


10

Gibt es ein Dienstprogramm wie grepoder sogar uniqfür ungenaue Suche, oder sollte ich es selbst schreiben?

Ich meine, es wird 90% (Anzahl kann variieren) übereinstimmen, oder so ähnlich. Zum Beispiel habe ich eine Datei mit mehreren Zeichenfolgen:

abc123
abd123
abc223
qwe938

In diesem Fall sollte ein solches Dienstprogramm die ersten drei Zeichenfolgen zurückgeben oder sagen, dass sie ähnlich sind. Natürlich kenne ich kein Muster des Dateiinhalts wie im Fall von grepoder uniq.


Dies ist sehr datenspezifisch. Ist Mary zum Beispiel wie Marie oder ist ABC wie BCD? Können Sie ein reales Beispiel für Ihre Daten geben?
EightBitTony

Antworten:


19

Zustimmen oder Tre-Grep tun, was Sie verlangen; Sie sind "ungefähre" Regex-Matching / Grep. Weitere Informationen finden Sie auch im Wikipedia-Artikel .

% 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'

Genau das suche ich. Vielen Dank.
Eile
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.